顾名思义,vmstat是virtual memory统计工具。不过,vmstat其实不仅仅可以汇报内存使用情况,磁盘活动,cpu利用情况等也会同时显示出来,因为这些和virtual memory活动也是有关联的,或者相互影响的。

首先,什么是virtual memory?简单的说,linux支持应用程序使用比实际内存更大的内存空间,这是通过将硬盘上一个特定的分区(swap分区)或者一个特定的文件作为 内存的扩展来做到的。当实际内存不够用时,linux根据某种策略,将内存中的部分空间写到交换分区以便留出应用程序运行所需要的内存空 间。但是,一旦开始使用交换空间,磁盘活动自然就多起来,cpu利用率就降低下来(因为磁盘的速度比内存和cpu慢多了)。这就是为什 么vmstat会同时显示磁盘和cpu活动情况的原因。

vmstat输出的各个字段的含义可以参考man vmstat的解释,下面就我的理解说一下vmstat常用的几种使用方式。

1 观察磁盘活动情况磁盘活动情况主要从以下几个指标了解:
bi: 表示从磁盘每秒读取的块数(blocks/s)。数字越大,表示读磁盘的活动越多
bo:表示每 秒写到磁盘的块数(blocks/s)。数字越大,表示写磁盘的活动越多
wa:cpu等待磁盘I/O(未决的磁盘IO)的时 间比例。数字越大,表示文件系统活动阻碍cpu的情况越严重,因为cpu在等待慢速的磁盘系统提供数据。wa为0是最理想的。如果wa经 常大于10,可能文件系统就需要进行性能调整了

2 观察cpu活动情况vmstat比top更能反映出cpu的使用情况:
us:用户程序使用cpu的时间比例。 这个数字越大,表示用户进程越繁忙。
sy:系统调用使用cpu的时间比例。注意,NFS由于是在内核里面运行 的,所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的话,就需要注意是否某个内核进程,比如NFS任务比较繁重。如果us和sy同时 都比较大的话,就需要考虑将某些用户程序分离到另外的服务器上面,以免互相影响。
id:cpu空闲的时间比例
wa:cpu 等待未决的磁盘IO的时间比例

Vmstat详细解释

vmstat:报告关于内核进程,虚拟内存,磁 盘,cpu的的活动状态的工具

主要有几个用法:

1.vmstat 间隔 测试数量
输出如下
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
0 0 26258 18280 0 0 0 7 20 0 127 227 64 1 2 96 1
其中:
kthr-- 内核进程的状态
--r 运行队列中的进程数,在一个稳定的工作量下,应该少于5 (r <5)
--b 等待队列中的进程数(等待I/O),通常情况下是接近0的.

memory--虚拟和真实内存的使用信息
--avm 活动虚拟页面,在进程运行中分配到工作段的页面空间数.
fre 空闲列表的数量.一般不少于120,当fre 少于120时,系统开始自动的kill进程去释放free list

page--页面活动的信息
--re 页面i/o的列表
--pi 从页面输入的页,一般不大于5
--po 输出到页面的页
--fr 空闲的页面数(可替换的页面数)
--sr 通过页面置换算法搜索到的页面数
--cy 页面置换算法的时钟频率

faults--在取样间隔中的陷阱及中断数
--in 设备中断
--sy 系统调用中断
--cs 内核进程前后交换中断

cpu--cpu的使用率
--us 用户进程的时间
--sy 系统进程的时间
--id cpu空闲的时间
--wa 等待i/o的时间
一般us+sy 在单用户系统中不大于90,在多用户系统中不大于80. 
wa时间一般不大于40.

2.vmstat -s
显示系统自初 始化以来的页面信息.

top是给Linux设计的。在FreeBSD VM里面的Free概念和其他OS完全不同,使用top查看Free内存对于FreeBSD来说可以说没什么意义。正确的方法是看vmstat。

# vmstat
procs       memory       page                        disk   faults       cpu
r b w      avm    fre   flt   re   pi   po   fr   sr ad0   in   sy   cs us sy id
0 2 1   270512   20316   30   0   0   0   26   5 1223 1589   98 593   1   1 99

最好使用vmstat t [n]命令,例如 vmstat 5 5,表示在T(5)秒时间内进行N(5)次采样。如果只使用vmstat,无法反映真正的系统情况。

procs:
r--> 在运行的进程数
b-->在等待io的进程数(等待i/o,paging等等)
w-->可以进入运行队列但被替换的进程

memoy(以 k为单位,包括虚拟内核和真实内存,正在运行或最近20秒在运行的进程所用的虚拟内存将被视为active)
avm-->活动的虚拟内存
free--> 空闲的内存

pages(统计错误页和活动页,每5秒平均一下,以秒为单位给出数值)
flt-->错误页总数
re--> 回收的页面
pi-->进入页面数
po-->出页面数
fr-->空余的页面数
sr-->每秒通过 时钟算法扫描的页面

disk 显示每秒的磁盘操作(磁盘名字的前两个字母加数字,默认只显示两个磁盘,如果有多的,可以加-n来增加数字或在命令行下把磁盘名都填上。)

fault 显示每秒的中断数
in-->设备中断
sy-->系统中断
cy-->cpu交换

cpu 表示cpu的使用状态
cs-->用户进程使用的时间
sy-->系统进程使用的时间
id-->cpu空闲的时间

解释:
如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果pi,po 长期不等于0,表示内存不足。
如果disk 经常不等于0, 且在 b中的队列大于3,表示 io性能不好。

Linux下vmstat输出释疑:

Vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 100152 2436 97200 289740 0 1 34 45 99 33 0 0 99 0

procs
r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

cpu 表示cpu的使用状态
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长 期大于50%,需要考虑优化用户的程序
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可 能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
id 列显示了cpu处在空闲状态的时间百分比
system 显示采集间隔内发生的中断数
in 列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。

memory
swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统 性能还是正常
free 当前的空闲页面列表中内存数量(k表示)
buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率 比较好。

swap

si: Amount of memory swapped in from disk (kB/s). 虚拟内存的页导入(从SWAP DISK导入RAM)
so: Amount of memory swapped to disk (kB/s). 虚拟内存的页导出.

IO
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
bo 块设备写入数据的总量(写磁盘)(每秒kb)
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负 载,可以结合iostat输出来分析。

转载自:http://liulinxia02.blog.163.com/blog/static/268687720103102411201/

转载于:https://blog.51cto.com/kwen122/1434416

vmstat - Linux系统性能监控工具相关推荐

  1. Linux系统性能监控工具Glances

    转载来源 :https://mp.weixin.qq.com/s/ZshbHmaSbpH9E_lMNXYzjg 一.Glances介绍 glances是一个基于python语言开发,可以为linux或 ...

  2. linux guard什么进程,使用linux系统性能监控工具KSysguard监控远端主机介绍

    KDE System Guard默认的窗口 前端图形界面使用传感器(sensors)获得要显示的信息.传感器返回的可以是一个简单的数值或更复杂的信息如表格.针对不同的信息类型都提供了一个或多个显示界面 ...

  3. Linux:系统性能监控工具-tsar安装和使用

    在上家公司做性能压力测试时就用过tsar,但总结文档留在了内部,正好借着最近工作内容又用上了tsar,总结起来 目录 前言 tsar 介绍 总体架构 安装tasr tsar配置介绍 配置文件 定时任务 ...

  4. Linux系统性能监控

    Linux系统性能监控 1. 前期准备 2.Linux系统性能查看 2.1. Linux CPU的相关名词解释 2.2. Linux 性能指标分析指令 2.3. CPU 2.4. 磁盘IO类 2.5. ...

  5. avast! for linux/unix servers,最常见的Linux/Unix监控工具vmstat命令详解

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

  6. 20个命令行工具监控 Linux 系统性能(转载)

    1. top - Linux 系统进程监控 top 命令是性能监控程序,它可以在很多 Linux/Unix 版本下使用,并且它也是 Linux 系统管理员经常使用的监控系统性能的工具.Top 命令可以 ...

  7. 20个常用Linux性能监控工具/命令

    20个常用Linux性能监控工具/命令 对于 Linux/Unix 系统管理员非常有用的并且最常用的20个命令行系统监视工具.这些命令可以在所有版本的 Linux 下使用去监控和查找系统性能的实际原因 ...

  8. Linux 性能监控工具命令大全

    谈到系统性能监控和分析工具,就不得不提Brendan Gregg的系统分析,他的图非常系统化的展示了应用程序,系统调用,内核,协议栈,硬件等各块之间的交互.有兴趣的朋友可以根据这张图里的命令进行组合进 ...

  9. Linux系统性能监控和调试

    题记 对于每个互联网研发人员来说,每天要监控和调试 Linux 系统性能问题都是非常困难的工作. 为此,我们总结了非常有用的并且最常用的20个命令行系统监视工具.这些命令可以在所有版本的 Linux ...

最新文章

  1. javascript进制转换_44道JavaScript送命题
  2. 稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件
  3. JDBC(Java Data Base Connectivity,java数据库连接)
  4. JAVAEE框架之SpringMVC基础
  5. 正三角形旋转一周得到的图形是_七年级数学上册_第一章《基本的几何图形》_知识点...
  6. Exception while invoking! org.apache.thrift.protocol.TProtocolException: Bad version in readMessageB
  7. mybatis介绍(一)
  8. zabbix替代smokeping的解决方案
  9. 保研面试 算法题_面试挂在了一道 LRU 缓存算法设计题
  10. 微信分享网页链接缩略图不显示解决方法
  11. 记录一个手写场景的过程
  12. linux timeout 格式,Linux内核API wait_for_completion_timeout
  13. 最简理解空间射线与平面交点
  14. 向量叉积和点积混合运算_叉乘点乘混合运算公式
  15. 股票大作手回忆录投机感悟
  16. COLING 2018 accepted paper
  17. 360一直把oracle当成病毒,为什么360一直把软件程序当做木马?
  18. java mp3转midi_javax_sound_midi-_player 将mid音频文件用java来实现它的播放和使用 - 下载 - 搜珍网...
  19. DDSM多区域标注之处理overlay文件框出病灶区域
  20. HTML送朋友的唯美新年贺卡/祝福贺卡/生日礼物/情人节礼物

热门文章

  1. 离散数学专业术语(continuous updating)
  2. FPGA之道(74)Verilog生成语句
  3. 【 Vivado 】在工程模式下通过jou文件来学习 Tcl 命令
  4. 非线性方程求根的牛顿法
  5. Wallace树专题研究
  6. 批量下载的实现及java.lang.IllegalStateException异常
  7. Java 8 vs. Scala之Lambda表达式
  8. java_有返回值线程_提前加载例子
  9. echo打印彩色的用法
  10. 很久没有更新blog了,对不起每一位朋友。