cpu篇
每一秒采集一次数据:
r : 当前运行队列中线程的数目.代表线程处于可运行状态,但CPU 还未能执行.(值越大系统越忙)
b : 当前进程阻塞并等待IO 请求完成的数目(值越大系统越忙)
swpd :虚拟内存已使用的大小(大于0表示内存不足)
in : 当前中断被处理的数目(值越大系统越忙)
cs : 当前kernel system中,发生上下文切换的数目(值越大系统越忙)
free : 空闲的物理内存的大小
buff : buffer缓存大小(buffer是针对数据元文件的缓存,是对数据块处理)
cache : cache缓存大小(cacha是对数据文件缓存,是文件系统层的)
si : 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,通过ps查找最大进程使用的程序
so : 每秒虚拟内存写入磁盘的大小
bi:从块设备读入的数据总量(读磁盘)(KB/S)
bo:写入到块设备的数据总量(写磁盘)(KB/S)
磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大。
in : 系统每秒CPU的中断次数,包括时间中断
cs : 每秒上下文切换次数,可以作为web测压的选项,如果该值过大,表示CPU大部分浪费在上下文切换,没有充分利用cpu资源
us : 用户进程消耗的CPU 时间,
sy : 内核进程消耗的CPU时间,Sy的值较高时,说明内核消耗的CPU资源很多
wa : IO等待CPU处理的时间。wa的值高时,说明IO等待比较严重,此时磁盘可能有大量的操作
id : CPU处于空闲状态时间百分比
实例一
根据观察值,我们可以得到以下结论:
1.有大量的中断(in) 和较少的上下文切换(cs).这意味着一个单一的进程在产生对设备的大量请求.
2.进一步显示某单个应用,user time(us)经常在85%或者更多.考虑到较少的上下文切换,这个应用应该还在处理器中被处理.
3.运行队列还在可接受的性能范围内,其中有2个地方,是超出了允许限制.
案例二
根据观察值,我们可以得到以下结论:
1.上下文切换数目高于中断数目,说明kernel中相当数量的时间都开销在上下文切换线程.
2.大量的上下文切换将导致CPU 利用率分类不均衡.很明显实际上等待io 请求的百分比(wa)非常高,以及user time百分比非常低(us).
3.因为CPU 都阻塞在IO请求上,所以运行队列里也有相当数目的可运行状态线程在等待执行.
mpstat 工具的使用
参考:http://www.linuxeden.com/html/softuse/20131229/147003.html
# mpstat -P ALL 1
Linux 3.2.0-4-amd64 (vmware1) 04/10/2014 _x86_64_(2 CPU)
04:15:33 AMCPU%usr%nice%sys %iowait%irq%soft%steal%guest%idle
04:15:34 AMall0.000.000.000.000.000.000.000.00100.00
04:15:34 AM00.000.000.000.000.000.000.000.00100.00
04:15:34 AM10.000.000.000.000.000.000.000.00100.00
%user用户进程所使用 CPU 的百分比。用户进程是用于应用程序(如 Oracle 数据库)的非内核进程。
%nice 表示使用 nice 命令对进程进行降级时 CPU 的百分比。nice 命令更改进程的优先级。
%system 表示内核进程使用的 CPU 百分比
%iowait 表示等待 I/O 所使用的 CPU 时间百分比
%irq 表示用于处理系统中断的 CPU 百分比
%soft 表示用于软件中断的 CPU 百分比
%steal : 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比(注意:虚拟机才有的选项)
%guest : 显示运行虚拟处理器时CPU花费时间的百分比(注意:虚拟机才有的选项)
%idle CPU 的空闲时间
%intr/s 每秒 CPU 接收的中断总数
cpu篇总结
监控 CPU 性能由以下几个部分组成:
1.检查system的运行队列,以及确定不要超出每个处理器3个可运行状态线程的限制.
2.确定CPU 利用率中user/system比例维持在70/30
3.当CPU 开销更多的时间在system mode,那就说明已经超负荷并且应该尝试重新调度优先级
4.当I/O 处理得到增长,CPU 范畴的应用处理将受到影响