CPU负载和利用率
CPU 的负载和利用率是两个不同的概念,但是他们都可以在top命令中查看。CPU利用率显示的是程序在运行期间实时占用的CPU百分比,而CPU负载显示的是一段时间内正在使用和等待使用CPU的平均任务数。CPU利用率高,并不意味着CPU的负载大。两者之间没有必然的关系。
常用命令介绍:
* uptime
首先我们需要明白load average后面的三个数字代表什么,他们分别代表前一分钟,五分钟,十五分钟的CPU负载,一般来说较重要的指标是最后一个,因为我们需要尽量避免一些突发的情况。那么这些数字处于什么区间是正常的呢?首先我们需要知道,这些数字是和你的服务器的CPU核数是紧密相关的,如果你只有一个核的话,那么数字为1.0就表示刚好在CPU的承受范围之内。这些数字当然是越小越好,但是理论上0.0~1.0之间都是正常范围。根据经验来说,如果一直在0.7上下,那么说明你可能需要花些时间来调查;如果长期徘徊或者超过1.0,那么你就需要进行修复啦!
对应的,提供查看linux下查看逻辑CPU的命令:
* top
top命令不仅可以查看当前系统的平均负载,还可以查看不同进程对于CPU、内存等资源的使用情况。
默认情况下,top命令是以CPU使用率由高到低排序显示进程信息的,在 top 信息界面按 K 键,并输入想要终止的PID,就可以直接杀死指定进程。
top的 -b 选项开启批处理模式,将每次刷新全部打印到stdout
top的 -n 选项指定退出top命令前刷新多少次信息。
top命令的输出:
第1行:与uptime相同;
第3行:当前的CPU运行情况:
us:非nice用户进程占用CPU的比率
sy:内核、内核进程占用CPU的比率;
ni:如果一些用户进程修改过优先级,这里显示这些进程占用CPU时间的比率;
id:CPU空闲比率,如果系统缓慢而这个值很高,说明系统慢的原因不是CPU负载高;
wa:CPU等待执行I/O操作的时间比率,该指标可以用来排查磁盘I/O的问题,通常结合wa和id判断
hi:CPU处理硬件终端所占时间的比率;
si:CPU处理软件终端所占时间的比率;
st:流逝的时间,虚拟机中的其他任务所占CPU时间的比率;
用户进程占比高,wa低,说明系统缓慢的原因在于进程占用大量CPU,通常还会伴有较低的id,说明CPU空转时间很少。
wa低,id高,可以排除CPU资源瓶颈的可能。
wa高,说明I/O占用了大量的CPU时间,需要检查交换空间的使用,交换空间位于磁盘上,性能远低于内存,当内存耗尽开始使用交换空间时,将会给性能带来严重影响,所以对于性能要求较高的服务器,一般建议关闭交换空间。另一方面,如果内存充足,但wa很高,说明需要检查哪个进程占用了大量的I/O资源。
* iostat
如果iowait过长,说明是磁盘瓶颈;system过长,说明是内核瓶颈。
在Device一行,可以看到一些IO指标:
tps: 每秒I/O传输请求量;
Blk_read/s:每秒读取多少KB;
Blk_wrtn/s:每秒写多少KB;
Blk_read:一共读了多少KB;
Blk_wrtn:一共写了多少KB
* sar
sar命令查看CPU、内存和磁盘记录。默认情况下,sar命令显示当天的统计信息,不带参数显示CPU统计信息,参数-r显示收集的内存记录,-b显示磁盘I/O
查看当天CPU使用:
查看当天内存使用: