vmstat命令详解

vmstat 命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,MEM内存使用,虚拟内存交换情况,IO读写情况。

工作原理

在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。

在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。

分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。

当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。尽管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)。

使用说明

用法:
vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]

-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。

命令示例

vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数(单位是秒);第二个参数是采样的次数,如:

2表示每个两秒采集一次服务器状态,1表示采集两次
shell> 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 1466400  17856  81040    0    0     2     0    6    5  0  0 100  0  0    

vmstat每2秒采集数据,一直采集直到结束vmstat程序为止
shell> 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 1466284  17856  81040    0    0     2     0    6    5  0  0 100  0  0    
 0  0      0 1466276  17856  81040    0    0     0     0   43   66  0  0 100  0  0    
 0  0      0 1466276  17856  81040    0    0     0     0   42   65  0  0 100  0  0    
...

输出结果含义:

  • r 表示等待执行的进程数,当该值超过CPU数目,就表明出现CPU瓶颈。

  • b 表示阻塞的进程数,比如正在等待I/O、或者内存交换等。

  • swpd 表示已使用的虚拟内存大小。

  • free 空闲的物理内存,当前的空闲页面列表中内存数量

  • buff 缓存内存大小,一般对块设备的读写才需要缓存

  • cache 缓冲内存大小,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。

  • si 从磁盘读入swap的大小(Kb/s)。

  • so 从swap写入磁盘的大小(Kb/s)。

  • bi 块设备每秒接收的块数量(块/s),这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。

  • bo 块设备每秒发送的块数量(块/s)。

  • in 每秒CPU的中断次数,包括时间中断,表示在某一时间间隔中观测到的每秒设备中断数

  • cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了要考虑调低线程或者进程的数目。

  • us 显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。

  • sy 显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。

  • id 空闲CPU百分比

  • wa 等待IO CPU百分比,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。

参考:
http://blog.chinaunix.net/uid-22741583-id-3087675.html
http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html

整理自网络

Svoid
2015-04-05

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29733787/viewspace-1551880/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29733787/viewspace-1551880/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值