首页 > 技术文章 > CPU负载及利用率解析

shiqing-zhang 2020-12-22 15:16 原文

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

 

推荐阅读