红联Linux门户
Linux帮助

使用vmstat和iostat命令进行Linux性能监控

发布时间:2015-04-01 09:52:06来源:linux.cn作者:Linux中国

这是我们正在进行的Linux命令和性能监控系列的一部分。vmstat和iostat两个命令都适用于所有主要的类unix系统(Linux/unix/FreeBSD/Solaris)。

如果vmstat和iostat命令在你的系统中不可用,请安装sysstat软件包。vmstat,sar和iostat命令都包含在sysstat(系统监控工具)软件包中。iostat命令生成CPU和所有设备的统计信息。你可以从http://sebastien.godard.pagesperso-orange.fr/download.html连接中下载源代码包编译安装sysstat,但是我们建议通过YUM命令进行安装。
使用vmstat和iostat命令进行Linux性能监控

注:以上图片上传到红联Linux系统教程频道中。


在Linux系统中安装sysstat

#yum -y install sysstat

vmstat - 内存,进程和分页等的简要信息。
iostat - CPU统计信息,设备和分区的输入/输出统计信息。


Linux下vmstat命令的6个范例
1. 列出活动和非活动的内存

如下范例中输出6列。vmstat的man页面中解析的每一列的意义。最重要的是内存中的free属性和交换分区中的si和so属性。

[root@tecmint ~]# vmstat -a
 
procs -----------memory-------------swap-------io------system-------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
10081042097380706280011548979169030

Free – 空闲的内存空间
si – 每秒从磁盘中交换进内存的数据量(以KB为单位)。
so – 每秒从内存中交换出磁盘的数据量(以KB为单位)。

注意:如果你不带参数的执行vmstat命令,它会输出自系统启动以来的总结报告。


2. 每X秒执行vmstat,共执行N次

下面命令将会每2秒中执行一次vmstat,执行6次后自动停止执行。

[root@tecmint ~]# vmstat 26
 
procs -----------memory-------------swap-------io------system-------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
00081042022064101368005635057039520
00081041222064101368000016350010000
00081041222064101368000014350010000
00081041222064101368000017380010000
00081041222064101368000017350010000
00081041222064101368000018360110000


3. 带时间戳的vmstat命令

带-t参数执行vmstat命令,该命令将会在每一行输出后都带一个时间戳,如下所示。

[tecmint@tecmint ~]$ vmstat -t 15
 
procs -----------memory-------------swap-------io------system-------cpu---------timestamp---
r b swpd free buff cache si so bi bo in cs us sy id wa st
000632028249921922440070555781395102012-09-0214:57:18 IST
1006320282499219224400001715141594002012-09-0214:57:19 IST
1006319042499219224400001956000595002012-09-0214:57:20 IST
0006317802499219224400001565240595002012-09-0214:57:21 IST
1006316562499219224400001895920595002012-09-0214:57:22 IST


4. 统计各种计数器

vmstat命令的-s参数,将输出各种事件计数器和内存的统计信息。

[tecmint@tecmint ~]$ vmstat -s
 
1030800 total memory
524656 used memory
277784 active memory
185920 inactive memory
506144 free memory
26864 buffer memory
310104 swap cache
2064376 total swap
0 used swap
2064376 free swap
4539 non-nice user cpu ticks
0 nice user cpu ticks
11569 system cpu ticks
329608 idle cpu ticks
5012 IO-wait cpu ticks
79 IRQ cpu ticks
74 softirq cpu ticks
0 stolen cpu ticks
336038 pages paged in
67945 pages paged out
0 pages swapped in
0 pages swapped out
258526 interrupts
392439 CPU context switches
1346574857 boot time
2309 forks


5. 磁盘统计信息

vmstat的-d参数将会输出所有磁盘的统计信息。

[tecmint@tecmint ~]$ vmstat -d
 
disk-------------reads------------------------writes----------------IO------
total merged sectors ms total merged sectors ms cur sec
ram0 0000000000
ram1 0000000000
ram2 0000000000
ram3 0000000000
ram4 0000000000
ram5 0000000000
ram6 0000000000
ram7 0000000000
ram8 0000000000
ram9 0000000000
ram10 0000000000
ram11 0000000000
ram12 0000000000
ram13 0000000000
ram14 0000000000
ram15 0000000000
loop0 0000000000
loop1 0000000000
loop2 0000000000
loop3 0000000000
loop4 0000000000
loop5 0000000000
loop6 0000000000
loop7 0000000000
sr0 0000000000
sda 771251456687324096193282288842574026445660126
dm-0115780659242111301732163025738484600260126
dm-1324025923845000002


6. 以MB为单位输出统计信息

vmstat的-S和-M参数(大写和MB)将会以MB为单位输出。vmstat默认以KB为单位输出统计信息。

[root@tecmint ~]# vmstat -S M 15
 
procs -----------memory-------------swap-------io------system-------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
00034653476009584255029620
00034653476000012150010000
00034653476000032620010000
00034653476000015130010000
0003465347600003461019900


linux下的Iostat命令的6个范例
1. 输出CPU和输入/输出(I/O)的统计信息

不带参数的iostat命令将会输出CPU和每个分区的输出/输出的统计信息,如下所示。

[root@tecmint ~]# iostat
 
Linux2.6.32-279.el6.i686(tecmint.com)09/03/2012 _i686_ (1 CPU)
 
avg-cpu:%user %nice %system %iowait %steal %idle
0.120.011.542.080.0096.24
 
Device: tps Blk_read/s Blk_wrtn/s Blk_readBlk_wrtn
sda 3.59161.0213.48108600290882
dm-05.76159.7113.47107715490864
dm-10.050.380.0025760


2. 只输出CPU的统计信息

iostat命令的-c参数仅输出CPU的统计信息,如下所示。

[root@tecmint ~]# iostat -c
 
Linux2.6.32-279.el6.i686(tecmint.com)09/03/2012 _i686_ (1 CPU)
 
avg-cpu:%user %nice %system %iowait %steal %idle
0.120.011.471.980.0096.42


3. 只输出磁盘的输入/输出统计信息

iostat命令的-d参数仅输出磁盘的所有分区的输入/输出的统计信息,如下所示。

[root@tecmint ~]# iostat -d
 
Linux2.6.32-279.el6.i686(tecmint.com)09/03/2012 _i686_ (1 CPU)
 
Device: tps Blk_read/s Blk_wrtn/s Blk_readBlk_wrtn
sda 3.35149.8112.66108600291746
dm-05.37148.5912.65107715491728
dm-10.040.360.0025760


4. 只输出某个磁盘的输入/输出统计信息

在默认情况下iostat命令会输出所有分区的统计信息,但是若在iostat命令后加上-p参数和磁盘设备名,该命令将会仅输出列出的磁盘的输入/输出统计信息,如下所示。

[root@tecmint ~]# iostat -p sda
 
Linux2.6.32-279.el6.i686(tecmint.com)09/03/2012 _i686_ (1 CPU)
 
avg-cpu:%user %nice %system %iowait %steal %idle
0.110.011.441.920.0096.52
 
Device: tps Blk_read/s Blk_wrtn/s Blk_readBlk_wrtn
sda 3.32148.5212.55108600291770
sda1 0.070.560.00412018
sda2 3.22147.7912.55108065091752


5. 输出逻辑卷管理(LVM)的统计信息

iostat命令的-N(大写)参数将会输出LVM(LCTT译注:LVM是linux环境下对磁盘分区进行管理的一种机制,是磁盘分区和文件系统间的一个逻辑层)的统计信息,如下所示。

[root@tecmint ~]# iostat -N
 
Linux2.6.32-279.el6.i686(tecmint.com)09/03/2012 _i686_ (1 CPU)
 
avg-cpu:%user %nice %system %iowait %steal %idle
0.110.011.391.850.0096.64
 
Device: tps Blk_read/s Blk_wrtn/s Blk_readBlk_wrtn
sda 3.20142.8412.16108600292466
vg_tecmint-lv_root 5.13141.6812.16107715492448
vg_tecmint-lv_swap 0.040.340.0025760


6. iostat版本信息

iostat的-V(大写)参数将会输出iostat的版本信息,如下所示。

[root@tecmint ~]# iostat -V
 
sysstat version 9.0.4
(C)SebastienGodard(sysstat orange.fr)

注意:vmstat和iostat的输出中包含多列的数据和标志,限于篇幅无法在本文中进行详细的解析。如果你想知道更多的信息,请查看vmstat和iostat的man帮助手册。如果你觉得本文对你有价值,请在下面的评论框中与你的朋友分享。