[Home]   [TOC]

Study_OS_Linux_VmStat  
Linux VmStat
Updated Feb 17, 2013 by jht5...@gmail.com
usage: vmstat [-V] [-n] [delay [count]]
              -V prints version.
              -n causes the headers not to be reprinted regularly.
              -a print inactive/active page stats.
              -d prints disk statistics
              -D prints disk table
              -p prints disk partition statistics
              -s prints vm table
              -m prints slabinfo
              -S unit size
              delay is the delay between updates in seconds. 
              unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)
              count is the number of updates.

procs, 下面三种状态的进程数

  • r 等待运行的进程数
  • b 在等待的进程数(通常在等待 IO)
  • w 可进入运行队列但被替换的进程(Solaris vmstat)

memory, 虚拟内存和实存信息

  • swpd 虚拟内存使用情况, unit:kb
  • free 空闲的内存, unit:kb
  • buff 被用来做 buffer 的内存数, unit:kb
  • cache 被用来做 cache 的内存数, unit:kb
  • inactive 闲置的内存,unit:kb, -a显示
  • active 活动内存, unit:kb,-a显示

swap, 显示磁盘与内存每秒的交换

  • si 从磁盘交换到内存的交换页数量, unit:kb
  • so 从内存交换到磁盘的交换页数量, unit:kb

io, 显示块设备每秒发送和收到的块数

  • bi 发送到块设备的块数, unit: blocks
  • bo 从块设备接收到的数据, unit:blocks

system

  • in 每秒的中断数, 包括时钟中断
  • cs 每秒的环境切换次数

CPU (在多处理器系统上, 这是全部处理器的平均值)

  • us CPU 使用时间(except kernel)
  • sy CPU 系统使用时间(内核)
  • id 闲置时间
  • wa 等待 IO 的时间
  • st

通过 vmstat 识别 CPU 瓶颈

    r(运行队列)展示了正在执行和等待 CPU 资源的任务个数. 当这个值超过了 CPU 数目, 就会出现CPU瓶颈

    获得 CPU 个数的命令(Linux):

[root@localhost ~]# cat /proc/cpuinfo | grep processor | wc -l
    当 r 值超过了CPU个数, 就会出现CPU 瓶颈, 解决办法大体如下

最简单的就是 增加 CPU个数
通过调整任务执行时间, 如大任务放到系统不繁忙的情况下进行执行, 进尔平衡系统任务
调整已有任务的优先级
通过 vmstat 识别 CPU 满负荷

    vmstat 中 CPU 的度量是百分比. 当us+sy≈100时, 表示 CPU 正在接近满负荷工作. <br>
但要注意的是, CPU 满负荷工作并不能说明什么, *nix 总是试图要 CPU 尽可能的繁忙, <br>
使得任务的吞吐量最大化. 唯一能够确定 CPU 瓶颈的还是 r(运行队列) 的值.

参考资料

[1]. http://blogread.cn/it/article/3902