一、衡量的性能指标
衡量CPU性能的指标一般包括下面几个部分:
1、用户使用cpu的情况
(1)cpu运行常规用户进程
(2)cpu运行niced process
(3)cpu运行实时进程
2、系统使用cpu情况
(1)用于I/O管理:中断和驱动
(2)用于内存管理:页面交换
(3)用户进程管理:进程开始和上下文切换。
3、WIO:用户进程等待磁盘I/O而使CPU处于空闲状态的比率。
4、cpu的空闲率,除了上面的WIO以外的空闲时间。
5、cpu用户上下文交换的比率
6、nice
7、real-time
8、运行进程队列的长度
9、平均负载
二、linux常用监控cpu整体性能的工具------vmstat
功能:报告关于内核线程、虚拟内存、磁盘、陷阱和cpu活动的统计信息。
参数详解:
-f 显示系统启动后的派生数目。
-i 显示从系统启动后每隔设备造成的终端数目。
-I 用新的输出栏显示I/O定向视图,p在标题kthr下,栏fi和fo在标题页面下,而不是栏下;re和cy在页标题中。
-vs 显示所有可用的vmm(运行各种虚拟机的OS)统计信息
-t 显示vmstat的每一输出行旁边的时间戳记。时间戳记按照HH:MM:SS格式显示。
范例:
1、vmstat 显示引导后的统计信息摘要
2、vmstat 2 5
显示2秒时间间隔的5个摘要,第一次摘要包含引导后的时间统计信息
3、vmstat scdisk13 scdisk14
显示引导后包括逻辑磁盘scdisk13和scdisk14的统计信息摘要
4、vmstat -f 显示派生统计信息
5、vmstat -s 显示各事件的计数
6、vmstat -t 显示每一输出栏旁边的时间戳记
7、vmstat -I 要以另一套输出栏显示新的I/O定向视图
8、vmstat -vs 显示所有可用的vmm统计信息
各项意义:
vmstat 1 10
【procs】
r:在运行队列中等待的进程数
ready
b:在等待io的进程数
w:可进入运行队列但被替换的进程
【memory】
swpd:虚拟内存使用情况,单位KB。
swap:现时可用的交换内存,单位KB
free:空闲的内存,单位KB
buff:被用来做为缓存的内存数,单位KB
【swap】
si:从磁盘交换到内存的交换页数量,单位:KB/秒
so:从内存交换到磁盘的交换页数量,单位:KB/秒
【io】
bi:发送到块设备的块数,单位:块/秒
bo:从块设备接收到的块数,单位:块/秒
【system】
in:每秒中断书,包括时钟中断
cs:每秒的环境(上下文)切换次数
us:cpu用户使用时间百分比
sy:cpu系统使用时间百分比
id:cpu空闲时间百分比
wa:IO等待消耗的cpu时间百分比
分析:
(1)若连续
r>us,表示系统现在运行比较慢,有多数的进程在等待cpu。造成系统中进行运行过慢。
(2)若 r>4sy,则系统面临着cpu短缺的问题,或者是cpu速率过低。
(3)若经常 r>4 &
id<40,表示cpu的负荷很重。
(4)si,so值越大,会看到由内核消耗的cpu时间会越大。
(5)若swap(si和so)值比较高,并且free比较少,有可能是内存不足。
(6)若有过多的上下文切换(cs)和disk block从RAM中被读入(bo),就有可能导致cpu使用过高。
(7)sy的值高时,说明系统内核消耗的cpu资源多
(8)us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
(9)id持续为0并且sy=2us,系统则面临着cpu资源的短缺。
(10)wa>25%,表明磁盘子系统可能没有被正确平衡,或可能是磁盘工作负荷很重的结果。
如果再一个单用户系统中,us+sy>90%,我们就不认为系统的cpu是有瓶颈的
如果在一个多用户系统中,us+sy>80%,我们就认为系统的cpu是有瓶颈的。其中的进程将要花时间在运行队列中等待。响应时间和吞吐量会受损害。
(11)wa>40%表明磁盘io没有也许存在不合理的平衡,或者对磁盘操作比较频繁
(12)wa值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)
结论:只是一个I/O瓶颈。
解决办法:
当发生以上问题的时候请先调整应用程序对CPU的占用情况.使得应用程序能够更有效的使用CPU.同时可以考虑增加更多的CPU. 关于CPU的使用情况还可以结合mpstat, ps aux top prstat –a等等一些相应的命令来综合考虑关于具体的CPU的使用情况,和那些进程在占用大量的CPU时间.一般情况下,应用程序的问题会比较大一些.比如一些SQL语句不合理等等都会造成这样的现象.