AIX文档——vmstat 命令

来源:互联网 发布:win7添加xp网络打印机 编辑:程序博客网 时间:2024/05/29 04:56

vmstat 命令

第一个要使用的工具是 vmstat 命令,该命令可迅速提供关于各种系统资源和与之相关的性能问题的简要信息。

vmstat 命令报告关于内核线程的统计信息,包括处于运行和等待队列中的、内存中的、页面调度中的、磁盘中的、中断、系统调用、上下文切换和 CPU 活动的内核线程。所报告的 CPU 活动是用户方式、系统方式、空闲时间和等待磁盘 I/O 的百分比细目分类。
注: 如果使用 vmstat 命令时不带任何选项,或者只带有时间间隔和(可选)计数参数,例如 vmstat 2 10,那么第一行数字为自系统重新引导以来的平均值。
作为一个 CPU 监视器,vmstat 命令优于 iostat 命令,因为 vmstat 命令是滚动的,使得它的每报告一行的输出更容易扫描,并且如果有很多磁盘连接到系统中,由此所涉及的开销更少。下面的示例可以帮助您识别一个程序失控时或 CPU 过度密集以至于不能在一个多用户环境中运行时的情况。
# vmstat 2kthr     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(内核线程)列。查看故障列也是值得的:

  • cpu

    在该时间间隔内使用 CPU 时间的百分比细分。cpu 列如下:

    • us

      us 列显示了用户方式下所花费 CPU 时间的百分比。UNIX® 进程可在用户方式下执行,也可在系统(内核)方式下执行。当在用户方式下时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量。

    • sy

      sy 列详述了 CPU 在系统方式下执行一个进程所花时间的百分比。这包括内核进程(kproc)和其他需要访问内核资源的进程所消耗的 CPU 资源。如果一个进程需要内核资源,它必须执行一个系统调用,并由此切换到系统方式从而使该资源可用。例如,对一个文件的读或写操作需要内核资源来打开文件、寻找特定的位置,以及读或写数据,除非使用内存映射文件。

    • id

      id 列显示了没有暂挂本地磁盘 I/O 时,CPU 空闲或等待的时间百分比。如果没有线程可供执行(运行队列为空),则系统将分派一个称为 wait 的线程(又称为空闲 kproc)。在一个 SMP 系统中,每个处理器都有一个wait 线程可分派。由 ps 命令(带有 -k 或 -g 0 选项)生成的报告将其标识为 kproc 或 wait。如果 ps 报告显示这个线程的总计时间较高,这表明存在重要的时间段,其中没有其他线程准备在 CPU 上运行或等待执行。系统因此大部分时间空闲等待新任务。

    • wa

      wa 列详细显示了暂挂本地磁盘 I/O 和 NFS 加载磁盘的 CPU 空闲时间百分比。如果在 wait 运行时至少有一个未完成的磁盘 I/O,该时间就归为 I/O 等待时间。除非进程使用异常 I/O,否则对磁盘的 I/O 请求会导致调用的进程阻塞(或睡眠),直到请求完成为止。一旦进程的 I/O 请求完成,该进程就放入运行队列中。如果 I/O 很快完成,该进程可以使用更多的 CPU 时间。

      超过 25% 的 wa 的值可以表示磁盘子系统可能没有被正确平衡,或者这也可能是磁盘密集工作负载的结果。

       

原创粉丝点击