VMstat命令详解

vmstat可以对操作系统的内存信息、进程状态、 CPU 活动、磁盘等信息进行监控, 不足之处是无法对某个进程进行深入分析。

[root@besttest ~]# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 760648  11708  93028    0    0     9     1   16   18  0  0 100  0  0    

2表示每个两秒采集一次服务器状态,1表示只采集一次。

实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如:

复制代码
[sdk_test@ssdk1 server]$ vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 168416 252324 12417400    0    0     2     8    0    1  0  0 99  0  0    
 0  0      0 169144 252324 12417484    0    0     0     0 1127 1277  1  1 99  0  0    
 0  0      0 170632 252324 12417596    0    0     0    28 1246 1383  1  1 98  0  0    
 0  0      0 169556 252324 12417700    0    0     0    20 1446 1565  1  0 98  0  0    
 0  0      0 169928 252324 12417828    0    0     0    24 1286 1469  1  1 98  0  0    
 0  0      0 170168 252324 12417928    0    0     0    64 1328 1513  1  1 98  0  0    
复制代码

这表示vmstat每2秒采集数据,一直采集,直到我结束程序,这里采集了6次数据我就结束了程序


好了,命令介绍完毕,现在开始实战讲解每个参数的意思

 

procs
 R 列表示运行和等待 CPU 时间片的进程数, 这个值如果长期大于系统 CPU 个数, 说明CPU 不足,需要增加 CPU。
 B 列表示在等待资源的进程数,比如正在等待 I/O 或者内存交换等。


memory
 swpd 列表示切换到内存交换区的内存大小(单位 KB),通俗讲就是虚拟内存的大小。如果 swap 值不为 0 或者比较大, 只要 si、 so 的值长期为 0.这种情况一般属于正常情况。
 free 列表示当前空闲的物理内存(单位 KB)。
 Buff列表示 baffers cached 内存大小,也就是缓冲大小,一般对块设备的读写才需要缓冲。
 Cache 列表示 page cached 的内存大小, 也就是缓存大小, 一般作为文件系统进行缓冲,频繁访问的文件都会被缓存,如果 cache 值非常大说明缓存文件比较多,如果此时 io中的 bi 比较小,说明文件系统效率比较好。

swap
 Si 列表示由磁盘调入内存,也就是内存进入内存交换区的内存大小。
 so 列表示由内存进入磁盘,也就是有内存交换区进入内存的内存大小。
 一般情况下, si、 so 的值都为 0,如果 si、 so 的值长期不为 0,则说明系统内存不足,需要增加系统内存。

 io
 bi 列表示由块设备读入数据的总量,即读磁盘,单位 kb/s。
 bo 列表示写到块设备数据的总量,即写磁盘,单位 kb/s。
 如果 bi+bo 值过大,且 wa 值较大,则表示系统磁盘 IO 瓶颈。


 system
 in 列表示某一时间间隔内观测到的每秒设备中断数。
 cs 列表示每秒产生的上下文切换次数。这 2 个值越大,则由内核消耗的 CPU 就越多。

 cpu
 us 列表示用户进程消耗的 CPU 时间百分比, us 值越高, 说明用户进程消耗 cpu 时间越多,如果长期大于 50%,则需要考虑优化程序或者算法。
 sy 列表示系统内核进程消耗的 CPU 时间百分比,一般来说 us+sy 应该小于 80%,如果大于 80%,说明可能处女座 CPU 瓶颈。
 id 列表示 CPU 处在空闲状态的时间百分比。
 wa 列表示 IP 等待所占的 CPU 时间百分比, wa 值越高,说明 I/O 等待越严重,根据经验 wa 的参考值为 20%,如果超过 20%,说明 I/O 等待严重,引起 I/O 等待的原因可能是磁盘大量随机读写造成的, 也可能是磁盘或者此哦按监控器的贷款瓶颈(主要是块操作)造成的。
综上所述, 如果评估 CPU, 需要重点关注 procs 项的 r 列值和 CPU 项的 us、 sy、 wa 列的值。

posted @ 2017-12-15 11:16  北方客888  阅读(271)  评论(0编辑  收藏  举报