目录
前言:
调研监控,看到cpu load。
一般我们看cpu load是使用top命令。
通过uptime
或者top
命令就可以显示出,平均负载的内容如下:
top
Load Avg: 2.83, 3.19, 2.97
uptime
16:49 up 6:54, 2 users, load averages: 2.63 3.13 2.95
mac不行,在linux可以:
cat /proc/loadavg
结果:0.03 0.09 0.13 1/1882 27468
三个数字分别代表了一分钟,五分钟和十五分钟三个时间段内的CPU负载的平均值,而数字越低越好。数字越高表示系统出现了问题或机器过载。
Unix将CPU负载定义为运行队列的长度:当前正在运行的进程数与正在等待(排队)的进程数之和。
1. cpu load
理想情况:
一个核心被一个进程占用,以单核为例子。
单核最好为0.7以内理想,如果为1.0,需要查找问题原因并立即解决。否则,你的服务器可能在任何时候出现性能问题。
如果为5.0,那么可能系统马上就要崩溃了!千万不能到5.0
如果是多核,那么上面数字乘以逻辑核心数量,就是临界值。比如双核就是负载尽量不要高于2.
比如:如果你只有2个核心,依然跑4个进程,这就意味着有一半进程在某一个时刻抢不到CPU,这时候Load还是4,如果是短期状态还无所谓,如果长期是这个状态你就要注意了。
2. cpu使用率
使用率这个要结合时间片来说,影响使用率高低的因素不是LOAD的多少,而是在分配给某个进程时间片时,这个进程是否使用了CPU的计算能力。
如果没有使用计算能力,那么这个时间这个线程空闲的就是0%。但是load还是不变的。
从计算机角度来说,单核心CPU,假设1秒钟分为100个时间片,如果2个任务,第一个任务用了5个时间片执行完成,另外一个任务用了15个时间片执行完成,所以如果统计周期是1秒,那么这1秒内的CPU使用率就是20%(剩下的时间啥事没干)
CPU利用率高不一定负载高。利用率是一段时间内CPU被占用的情况。
CPU负载高利用率低:说明等待执行的任务很多,但是通常任务多CPU使用率也会比较高,如果低就说明CPU根本没工作,哪些很多的任务处于等待状态,可能进程僵死了。可以通过命令ps –axjf查看是否存在D状态的进程,该状态时不可中断的睡眠状态。这种状态无法被KILL。而有时候你通过top命令也看不出来,只能显示LOAD高,但是没有哪个进程的CPU使用率明显高,你可以通过ps –ux来查看。
CPU利用率高负载低:说明任务少,但是任务执行时间长,有可能是程序本身有问题,如果没有问题那么计算完成后则利用率会下降。这边的状态:(可运行分为正在运行进程和正在等待CPU的进程,状态为R;不可中断则是它正在做某些工作不能被中断比如等待磁盘IO等,其状态为D),它是从另外一个角度体现CPU的使用状态。
3. linux得到cpu核数
获得系统的CPU信息
cat /proc/cpuinfo
得到CPU核数 :下面两个均可
grep 'model name' /proc/cpuinfo | wc -l
cat /proc/cpuinfo| grep "cpu cores"| uniq
获得有几个物理CPU,可能有的是双路CPU(一般都是1个):
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
查看逻辑核心数
cat /proc/cpuinfo| grep "processor"| wc -l
4. mac系统获得cpu信息
这些无法在linux上用
查看物理CPU核心个数:
sysctl hw.physicalcpu
hw.physicalcpu: 4
查看逻辑CPU核心个数:
sysctl hw.logicalcpu
查看硬件信息:
system_profiler SPHardwareDataType
思考:
I/O占用cpu么?