CPU是用来运行各种程序,做各种计算的,一旦CPU处于高负荷状态,容易引起服务响应速度变慢
前言
CPU 说简单点,就是我们编写的程序,经过编译后,最终都会变成一条条的指令,由CPU来进行最终的执行。
CPU是用来运行各种程序,做各种计算的,一旦CPU处于高负荷状态,容易引起服务响应速度变慢,进而导致整个服务不可用,特别是在业务高峰期可能导致雪崩效应,最终整个系统出现瘫痪。
特殊名词
物理CPU
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
CPU核数
grep 'core id' /proc/cpuinfo | sort -u | wc -l
逻辑CPU
grep 'processor' /proc/cpuinfo | sort -u | wc -l
逻辑CPU=物理CPU个数×每颗核数
实操
top命令提供了实时的对系统处理器的状态监视。
具体可以查阅Linux top命令详解
load average
第一行的 load average 是系统平均负载, 后面的三个数分别是1分钟、5分钟、15分钟的负载情况
load average 是平均活跃进程数,平均活跃进程数 = 正在运行的进程 + 准备好等待运行的进程
如果平均负载值大于0.7 * CPU内核数,就需要引起关注。至于为什么可以阅读Linux系统平均负载3个数字的含义
load average与cpu使用率的区别
CPU使用率: 单位时间内cpu繁忙情况的统计
CPU密集型进程,CPU使用率和平均负载基本一致
IO密集型进程,平均负载升高,CPU使用率不一定升高
大量等待CPU的进程调度,平均负载升高,CPU使用率也升高
进程字段排序
默认进入top时,各进程是按照CPU的占用量来排序的。但是,我们可以改变这种排序
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
CPU使用率超过100%
有时候使用top命令发现CPU占用率竟超过100%。
这跟 CPU 数量有关,top命令是按CPU总使用率来显示的,4核理论上最高可达400%
vmstat 可对操作系统的虚拟内存、进程、CPU活动进行监控。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。v
一般我是用 vmstat 查看当前运行队列中线程的数目,代表线程处于可运行状态,但CPU还未能执行。
这个值可以作为判断CPU是否繁忙的一个指标;当这个值超过了CPU数目,就会出现CPU瓶颈了
这个可以结合top命令的负载值同步评估系统性能
具体使用情况参阅Linux vmstat命令详解
参考链接