Chinaunix

标题: vmstat命令 [打印本页]

作者: f980215    时间: 2006-06-24 20:46
标题: vmstat命令

处理单元是系统中最快的组件之一。在某一时间对单个程序来说保持 100% 的 CPU 占用率(也就是说,空闲 0%,等待 0%)超过几秒钟是相对少见的。甚至在重负载的多用户系统中,偶尔会出现一些 10 毫秒(ms)的时间段,在其结束时所有线程处于等待状态。如果监视器长时间地显示 CPU 占用率为 100%,则很有可能是某个程序陷入了死循环。即使程序“仅仅”是占用较多资源而不是崩溃了,也需要将它识别出来并进行处理。
r-->在运行队列中等待的进程数
b-->在等待io的进程数
w-->可以进入运行队列但被替换的进程
memoy
swap-->现时可用的交换内存(k表示)
free-->空闲的内存(k表示)
pages
re--》回收的页面
mf--》非严重错误的页面
pi--》进入页面数(k表示)
po--》出页面数(k表示)
fr--》空余的页面数(k表示)
de--》提前读入的页面中的未命中数
sr--》通过时钟算法扫描的页面
disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号
fault 显示每秒的中断数
in--》设备中断
sy--》系统中断
cy--》cpu交换
cpu 表示cpu的使用状态
cs--》用户进程使用的时间
sy--》系统进程使用的时间
id--》cpu空闲的时间
如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果pi,po 长期不等于0,表示内存不足。
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。

vmstat 命令(CPU)
第一个要使用的工具是 vmstat 命令,该命令可迅速提供关于各种系统资源和与之相关的性能问题的简要信息。vmstat 命令报告关于内核线程的统计信息,包括处于运行和等待队列中的、内存中的、页面调度中的、磁盘中的、中断、系统调用、上下文切换和 CPU 活动的内核线程。所报告的 CPU 活动是用户方式、系统方式、空闲时间和等待磁盘 I/O 的百分比细目分类。
注:
如果使用 vmstat 命令时不带任何选项,或者只带有间隔时间和任意的计数参数,例如 vmstat 2 10;那么第一行数字为自系统重新引导以来的平均值。
作为一个 CPU 监视器,vmstat 命令优于 iostat 命令,因为 vmstat 命令是滚动的,使得它的每报告一行的输出更容易扫描,并且如果有很多磁盘连接到系统中,由此所涉及的开销更少。下面的示例可以帮助您识别一个程序失控时或 CPU 过度密集以至于不能在一个多用户环境中运行时的情况。
# vmstat 2
kthr     memory             page              faults        cpu
----- ----------- ------------------------ ------------ -----------
r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs  us sy  id wa
1  0 22478  1677   0   0   0   0    0   0 188 1380 157 57 32  0 10
1  0 22506  1609   0   0   0   0    0   0 214 1476 186 48 37  0 16
0  0 22498  1582   0   0   0   0    0   0 248 1470 226 55 36  0  9
2  0 22534  1465   0   0   0   0    0   0 238  903 239 77 23  0  0
2  0 22534  1445   0   0   0   0    0   0 209 1142 205 72 28  0  0
2  0 22534  1426   0   0   0   0    0   0 189 1220 212 74 26  0  0
3  0 22534  1410   0   0   0   0    0   0 255 1704 268 70 30  0  0
2  1 22557  1365   0   0   0   0    0   0 383  977 216 72 28  0  0
2  0 22541  1356   0   0   0   0    0   0 237 1418 209 63 33  0  4
1  0 22524  1350   0   0   0   0    0   0 241 1348 179 52 32  0 16
1  0 22546  1293   0   0   0   0    0   0 217 1473 180 51 35  0 14
此输出显示了在一个死循环中将程序引入到一个繁忙的多用户系统中所带来的效果。头三个报告(已删除摘要)表明系统平衡在 50-55% 的用户、30-35% 的系统和 10-15% 的 I/O 等待处。当循环程序开始运行,所有可用的 CPU 周期都被耗用。因为循环程序不进行 I/O,所以它可以占有前面因为 I/O 等待而未用过的所有周期。更糟的是,这代表当一个有用进程放弃 CPU 时,始终有一个进程准备接管 CPU。因为循环程序的优先级与所有其它前台进程一样,所以当另一个进程变得可分派时它也没必要一定得放弃 CPU。该程序运行大约 10 秒钟(五个报告),然后由 vmstat 命令报告的活动恢复到较正常的模式。
最佳利用是让 CPU 在 100% 的时间中工作。这适用于单用户系统的情况,不需要共享 CPU。总的来说,如果 us + sy 时间低于 90%,则不认为单用户系统是 CPU 受限制的。但是,如果在一个多用户系统中 us + sy 时间超过 80%,则进程可能要花时间在运行队列中等待。响应时间和吞吐量会受损害。
要检查 CPU 是否是瓶颈,考虑 vmstat 报告中的四个 cpu 列和两个 kthr(内核线程)列。查看故障列也是值得的:


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13791/showart_132223.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2