不知道您在开发应用系统、申请服务器资源时有没有经常遇到CPU、内存、存储、带宽等概念?是不是有时候也搞不懂这些概念都是什么,更搞不清楚如何评估资源需求,申请少了了系统不够用,申请多了造成浪费,甚至无法通过审批。不管你有没有遇到,反正我是经常遇到。
本文结合日常工作经验对CPU、内存、存储、带宽等基本概念进行基本介绍并聊一聊如何有效的评估资源需求,不妥之处,欢迎评论区留言交流!
CPU是中央处理器,其表征了服务器的处理能力,CPU个数越多,核数越多,那么服务器的处理能力就越强。这里要说明的是,CPU个数和核数不一样,因为现在的CPU往往是多核的,也就是一个CPU有多个核心,因此CPU核数=CPU个数*每个CPU的核数。
不考虑超线程的情况下,服务器的CPU核数表征服务器同一时间能够运行的进程/线程个数。实践中,经常会说到4c、8c、16c、32c,这些都是指CPU的核数。
对于一般的业务系统,没有复杂的业务运算,对性能要求比较低,可能8c、甚至4c就够用了;而对于一些计算密集型的系统,如大数据类的系统,往往需要配置较多的CPU核数,32c、64c比较常见。
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
CPU
众所周知,服务器的存储分为内存和外存(磁盘存储)。在内存中的数据靠近CPU,读取和处理的速度非常快,在磁盘上的数据读取和处理的速度慢不少。因此,很多业务系统会使用内存进行性能加速。
如何评估需要多大内存的服务器,这个主要看需要把多少数据灌到内存里进行计算。如果是一般的业务系统,数据量不大,8G、16G、32G的内存也就够用了;对于大数据、人工智能、数据挖掘、BI等处理数据量较大、对处理要求较高、设计上使用内存计算的一些平台,可能需要32G、64G、128G,甚至更高。
具体评估时,可以找一个需要内存计算的场景,把可能处理的数据量测算一下(比如数据表的行数、列数、字段长度、字段类型等),就可以得出大概的内存需求。
内存
内存中的数据虽然快,但不可保存、易丢失,因此对于需要持久化的数据还是要保持在磁盘上,比如日志文件、数据文件、系统文件等。跟个人终端一样,服务器磁盘的大小也远大于内存的大小,基本是500G、1T、2T、4T这种。
磁盘概念比较好理解,那么怎么评估呢?
一种评估方式就是测算每天的日志文件、数据文件等新增文件的大小,按照数据清洗策略,测算一定周期内日志、数据文件的总大小,再加上程序文件、冗余备份等需要的大小,就可以得到应用系统需要的磁盘大小,
同样的,一般业务系统可能500G、1T就足够了,但对于数仓、大数据平台这种大数据量的处理系统,动辄好多个T都很正常。当然了,对于实际的企业应用来说,现在存储很少是直接一块一块硬盘的方式挂在服务器上,多是以外挂的方式存在,方便文件共享和管理。
存储
这个概念大家应该比较熟悉,因为在应用系统中经常涉及到系统的交互和数据的传输,这些都需要依赖于网络,如果网络带宽不够那么数据传输和系统交互的效率就很低,直接影响应用系统的性能。常说的带宽有百兆、千兆、万兆等,现在百兆在企业里很少存在了,基本都是千兆和万兆。
对于应用系统来说,一是要看系统的级别及其对性能的要求有多高,二是要看数据传输的大小和系统交互的频次。如果基本没有跨设备的数据传输和高频的跨设备的系统交互,那么千兆往往够用了;如果经常在跨设备上进行大量数据传输,那么还是万兆吧,不然就一个感觉:好慢啊!!
带宽
上面介绍了CPU、内存、存储、带宽的基本概念和评估方法,希望对您申请资源有帮助。但这里必须要强调一点:资源的使用都是有成本的,要节约,不要浪费,不要盲目扩大资源需求,毕竟闲置的资源都是白花花的人民币啊。
节约资源,从每一个应用系统做起。