CPU负载及利用率解析
CPU負載:
CPU平均负载(load average)是指某段时间内占用cpu时间的进程和等待cpu时间的进程数,这里等待cpu时间的进程是指等待被唤醒的进程,不包括处于wait状态进程。
CPU负载是基于内核数来计算的,有一个说法,“有多少内核,即有多少负载”
CPU负载小于等于0.7算是一种理想状态,0.7乘以内核数,得出服务器理想的CPU负载
当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。
当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来。
当系统负荷达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了。
如果只有1分钟的系统负荷大于1.0,其他两个时间段都小于1.0,这表明只是暂时现象,问题不大。
如果15分钟内,平均系统负荷大于1.0(调整CPU核心数之后),表明问题持续存在,不是暂时现象。
主要观察"15分钟系统负荷",将它作为服务器正常运行的指标。
CPU使用率:
CPU利用率是指CPU工作时间占总时间的比重,公式如下:
Utilization= work_time/total_time total_time=work_time+idle_ime.
可见,总时间由一段连续时间内的CPU工作时间长度和CPU空闲时间长度组成。
举个简单例子:
在单处理器中,线程1,先工作10ms,线程2再工作30ms,之后CPU空闲60ms。则此100ms时间段内,CPU的利用率就是40%
# 查看物理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个数 X 每颗物理CPU的核数
grep -c 'model name' /proc/cpuinfo(直接返回CPU總核心數)
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看内 存信息
# cat /proc/meminfo
查看线程数
grep 'processor' /proc/cpuinfo | sort -u | wc