1、 load average
系统负载(system load) 是指系统CPU的繁忙的度量,即有多少进程在等待被CPU调度(进程等待队列的长度)。
平均负载(load average) 是一段时间内系统的平均负载,时间段一般取1分钟,5分钟,15分钟
1.1、查看命令:
top命令
w命令
uptime命令
以top 命令说明
图中说明机器vanv的1分钟、5分钟、15分钟的平均负载分别是:0.08、0.12、0.16
1.2、load的数值含义
把CPU比喻成一条(单核)公路,进程任务比喻成公路上的汽车,load表示马路的繁忙程度:
load = 0:表示公路上一辆车也没有
load < 1:表示公路不堵车,汽车在公路上跑的游刃有余:
load =1:表示公路没有额外的地方可以跑汽车
load > 1:则表示公路上已经存现堵车,汽车需要出现等待
但是如果有两个CPU,则表示有两条公路,此时load >1 也不代表塞车,以此类推。
1.3、load 值的留意(单核为例)
一般我会以0.7作为一个分界线
load<0.7时,系统很闲
0.7<load<1, 系统状态可以应付
load == 1时,系统要处理不了,需要找一下原因
load > 5时,系统有严重的问题,会导致系统崩溃
1.4、三个load值得理解(单核)
1分钟 | 5分钟 | 15分钟 | 说明 |
load>5 | load<1 | load<1 | 短期内繁忙,中长期空闲,是一个抖动,或者阻塞前兆 |
load>5 | load>1 | load<1 | 短期内繁忙,中期紧张,可能是一个阻塞开始 |
load>5 | load>5 | load>5 | 系统正在阻塞 |
load<1 | load>1 | load>5 | 短期空闲,中长期繁忙,系统可能正在好转 |
1.5、多核处理器
上面说明都是以单核为例,如果我们的CPU是多核,那么处理的能力就翻倍,因此查看load average需要根据CPU核数来判断
计算公式:load average < CPU个数 * CPU核数 * 0.7
CPU物理个数查看命令:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
逻辑CPU个数查看命令:
cat /proc/cpuinfo| grep "processor"| wc -l
每个物理CPU的core个数
cat /proc/cpuinfo| grep "cpu cores"| uniq
查看是否开启intel的超线程技术(HT)
如果有两个逻辑CPU具有相同的"core id",那么超线程是打开的。可以根据以下原则,来判断是否支持HT技术。
如果"siblings"和"cpu cores"一致,则说明不支持超线程,或者超线程未打开。
如果"siblings"是"cpu cores"的两倍,则说明支持超线程,并且超线程已打开。
物理CPU与逻辑CPU的关系:
逻辑CPU的数量=物理CPU数量 *CPU cores * 2(支持并开启HT)