LINUX网络性能之管理工具之vmstat用法

2010-04-16  安顺 

vmstat是一个很全面的性能分析工具,可以观察到系统的进程 状态、内存使用、虚拟内存使用、磁盘的 IO、中断、上下问切 换、CPU使用等。系统性能分析工具中,我使用最多的是这个,
除了 sysstat 工具包外,这个工具能查看的系统资源最多。
对于 Linux 的性能分析,100%理解 vmstat 输出内容的含义, 那你对系统性能分析的能力就算是基本掌握了。
我这里主要说明一下这个命令显示出的部分数据代表的含义,和 它反映出系统相关资源的状况。输出内容共有 6 类,分别说明如下。
• Procs
– r:
运行的和等待(CPU时间片)运行的进程数, 这个值也可以判断是否需要增加CPU(长期 大于1)
– b:
处于不可中断状态的进程数,常见的情况 是由IO引起的
• Memory
– swpd: 切换到交换内存上的内存(默认以KB为单位)
• 如果 swpd 的值不为0,或者还比较大,比如超过100M了,但
是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响
系统性能。
– free: 空闲的物理内存
– buff: 作为buffer cache的内存,对块设备的读写进行缓冲
– cache: 作为page cache的内存, 文件系统的cache
• 如果 cache 的值大的时候,说明cache住的文件数多,如果频 繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。
• Swap
– si: 交换内存使用,由磁盘调入内存
– so: 交换内存使用,由内存调入磁盘
内存够用的时候,这2个值都是0,如果这2个值长期 大于0时,系统性能会受到影响。磁盘IO和CPU资 源都会被消耗。
我发现有些朋友看到空闲内存(free)很少或接近于0 时,就认为内存不够用了,实际上不能光看这一点 的,还要结合si,so,如果free很少,但是si,so也很 少(大多时候是0),那么不用担心,系统性能这时 不会受到影响的。
• Io
– bi: 从块设备读入的数据总量(读磁盘) (KB/s),
– bo: 写入到块设备的数据总理(写磁盘)
(KB/s)
随机磁盘读写的时候,这2个 值越大(如超 出1M),能看到CPU在IO等待的值也会越大
• System
– in: 每秒产生的中断次数
– cs: 每秒产生的上下文切换次数 上面这2个值越大,会看到由内核消耗的CPU
时间会越多
• Cpu
– us: 用户进程消耗的CPU时间百分比
• us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果 长期超过50% 的使用,那么我们就该考虑优化程序算法或者进 行加速了(比如 PHP/Perl)
– sy: 内核进程消耗的CPU时间百分比
• sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性 的表现,我们应该检查原因。
– wa: IO等待消耗的CPU时间百分比
• wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作 随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。
– id: CPU处在空闲状态时间百分比
• 情景分析 这个vmstat的输出那些信息值得关注?
– Procs r: 运行的进程比较多,系统很繁忙
– Io bo: 磁盘写的数据量稍大,如果是大文件的写,
10M以内基本不用担心,如果是小文件写2M以内
基本正常
– Cpu us: 持续大于50,服务高峰期可以接受
– Cpu wa: 稍微有些高
– Cpu id:持续小于50,服务高峰期可以接受
三 free命令显示系统内存的使用状况(物理内存和 交换内存)
• free命令输出的第二行(Mem)
这行分别显示了物理内存的总量(total)、已使用的 (used)、空闲的(free)、共享的(shared)、buffer(系统分配但未被使用的buffers 数量)、 cache(系统分配但未被使用的cache 数量)的内存。
•   free命令输出的第三行(-/+ buffers/cache) 这行最容易让人迷惑。
它显示的第一个值(used这一列)是这样得来的: Mem行used列 - Mem行buffers列 - Mem行cached列。(这个值就是实际使用的内存总量)
它显示的第二个值(free这一列)是这样得来的:Mem行free列 + Mem行buffers列 + Mem行cached列。(这个值就是系统当前实际可用内存)
• free命令输出的第四行(Swap) 这行显示交换内存的总量、已使用量、 空闲量
下面是buffers与cached的区别。
buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.cached是用来给文件做缓冲。那就是说:buffers是用来存储,目录里面有什么内容,权限等等。而cached直接用来记忆我们打开的文件,如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。
559°/5540 人阅读/5 条评论 发表评论

杨炯  2010-04-16

受益了,


金鑫  2010-04-17

学习了


刘光宇  2010-04-18

Vmstat和iostat都是实时监控,虽然可以通过写文件的方式导出,但是后期分析起来会非常麻烦,建议LZ可以了解下nmon这个工具,而且它有自己专门的分析工具,直接生成图表,一目了然


安顺  2010-04-19

刘光宇: Vmstat和iostat都是实时监控,虽然可以通过写文件的方式导出,但是后期分析起来会非常麻烦,建议LZ可以了解下nmon这个工具,而且它有自己专门的分析工具,直接生成图表,一目
恩,谢谢提议~~ nmon这是个非常好的分析工具。


刘光宇  2010-04-19

安顺: 恩,谢谢提议~~ nmon这是个非常好的分析工具。


登录 后发表评论