Linux系统性能分析之iostat与vmstat

2011年08月18日 Linux基础 评论 1 条 阅读 12,840 views 次

iostat监视I/O子系统情况

iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
iostat的语法如下:

iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ]
-c为汇报CPU的使用情况;
-d为汇报磁盘的使用情况;
-k表示每秒按kilobytes字节显示数据;
-t为打印汇报的时间;
-v表示打印出版本信息和用法;
-x device指定要统计的设备名称,默认为所有的设备;
interval指每次统计间隔的时间;
count指按照这个时间间隔统计的次数。

[root@yufei ~]# iostat -x
Linux 2.6.32-131.0.15.el6.x86_64 (yufei.opsers.org) 	08/18/2011 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.56    0.00    3.66   11.74    0.00   82.04

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
scd0              0.68     0.00    1.37    0.00     8.23     0.00     5.99     0.00    2.23   2.23   0.31
sda              30.97    18.75   33.92    8.67  1819.19   219.32    47.86     0.29    6.91   3.26  13.87
sdb               1.83     0.00    1.25    0.00    10.05     0.00     8.06     0.00    0.27   0.27   0.03

结果参数说明:

% user      显示了在用户级(应用程序)执行时产生的 CPU 使用率百分比。

% sys       显示了在系统级(内核)执行时产生的 CPU 使用率百分比。

% idle       显示了在 CPU 空闲并且系统没有未完成的磁盘 I/O 请求时的时间百分比。

% iowait   显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s

wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s

r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s

w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s

rsec/s: 每秒读扇区数。即 delta(rsect)/s

wsec/s: 每秒写扇区数。即 delta(wsect)/s

rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。

wkB/s: 每秒写K字节数。是 wsect/s 的一半。

avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)

avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。

await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)

svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)

%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

 

vmstat监视内存使用情况

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

vmstat的语法如下:

vmstat [-V] [-n] [delay [count]]

-V表示打印出版本信息;

-n表示在周期性循环输出时,输出的头部信息仅显示一次;

delay是两次输出之间的延迟时间;

count是指按照这个时间间隔统计的次数。

[root@yufei ~]# vmstat 
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   4116  38560  24456  90224    5   11   595    71   96  134  2  2 88  8  0

结果参数说明:

Procs

r:等待执行的任务数

b:处在非中断睡眠状态的进程数

展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了

Memory

swpd:正在使用的swap大小单位K

free:空闲的内存空间

buff:已使用的buff大小,对块设备的读写进行缓冲

cache:已使用的cache大小,文件系统的cache

inact:

active:

Swap

si:交换内存使用,由磁盘调入内存

so:交换内存使用,由内存调入磁盘

IO

bi:从块设备读入的数据总量(读磁盘) (KB/s)

bo:写入到块设备的数据总理(写磁盘) (KB/s)

System

in:每秒产生的中断次数

cs:每秒产生的上下文切换次数

上面这2个值越大,会看到由内核消耗的CPU时间会越多

CPU

us:用户进程消耗的CPU时间百分比

us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了

sy:内核进程消耗的CPU时间百分比

sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。

id:空闲

wa:IO等待消耗的CPU时间百分比

wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。

再一次提醒:如果说,你的系统没有上述命令,你需要通过yum provides "*bin/iostat" 和yum provides "*bin/vmstat" 来查询并安装相应的软件包,类似的相关问题,在以前的博客中也提及到,这里再来提醒一次!因为这是解决问题的方法。

1 条留言  访客:1 条  博主:0 条

  1. 看这个就像看天书一样呀

给我留言

Copyright © 羽飞博客 保留所有权利.   Ality主题 皖ICP备14013844号-1

用户登录