iostat名利可以显示自从系统启动开始的CPU平均时间(与uptime相似)。它也可以产生关于服务器硬盘子系统活动情况的报告,报告包括两部分内容:CPU使用情况和硬盘使用情况。iostat可以用来获得I/O瓶颈的详细信息和系统性能调优,参见3.4.1“查找硬盘瓶颈”。iostat是sysstat工具包的一部分。
例子2-11:iostat输出结果

CPU使用情况分为四个部分:
%user :显示用户级别(应用)所占用CPU的百分比。
%nice :显示拥有Nice优先级用户级别所占用CPU的百分比。(优先级和nice级别会在2.3.7“nice,renice”中做相应介绍)
%sys :显示系统级别(内核)所占用CPU的百分比。
%idle :显示空闲CPU的百分比。
设备使用情况分为下面几个部分:
Device :块设备名称
tps :设备每秒钟传输的数量(每秒钟I/O请求数)。多个单独的I/O请求可以合并到一个传输请求中,因为每个传输请求可以有不同的大小。
Blk_read/s,Blk_wrtn/s :每秒钟块设备读写块的数量。可以设置不同的块大小,一般为1024,2048,4048字节,这取决于分区的容量。例如使用下面的命令来获得/dev/sda1的块大小:
dumpe2fs -h /dev/sda1 |grep -F "Block size"
产生类似如下的输出:
dumpe2fs 1.34 (25-Jul-2003)
Block size: 1024
Blk_read,Blk_wrtn :显示自系统启动后读写块的总数。
iostat提供很多选项,对于性能来说最为常用的就是-x,它可以显示进阶的统计信息,示例如下。
例子2-12:iostat -x输出结果
rrqm/s,wrqm/s :每秒钟合并的读写请求数。多个单独的I/O请求可以合并到一个传输请求中,因为每个传输请求可以有不同的大小。
r/s,w/s :每秒钟读写请求数。
rsec/s,wsec/s :每秒钟读写的扇区数。
rkB/s,wkB/s :每秒钟读写了多少KB。
avgrq-sz :请求的平均大小,此值是以扇区为单位。
avgqu-sz :请求队列的平均长度。
await :显示系统级别(内核)所占用CPU的百分比。
svctm :I/O请求的平均服务时间(单位为毫秒)。
%util :I/O请求过程中CPU时间的百分比(设备的带宽使用率)。当接近100%时设备处于饱和状态。
计算I/O平均大小对于调整硬盘子系统访问模式非常有用。如下使用iostat -x -d,只显示有关于硬盘子系统的相关信息。
例子2-13:使用iostat -x -d分析I/O平均大小
在例子2-13的输出结果中,设备dasdc每秒钟写入12300.99KB的数据(kB_wrtn/s),这些数据被在一秒钟内分为2502.97次(w/s)I/O写入硬盘。I/O平均大小或请求平均大小为9.83块(avgrq-sz),本例中块大小为512字节。异步写操作平均I/O大小通常为奇数,然而大多数应用程序是以4KB的倍数(例如4KB,8KB,16KB,32KB等)来执行读写操作的。在上面的例子中应用程序随机写操作请求的大小为4KB,然而iostat显示平均请求大小为4.915KB,这种差别主要是由于Linux文件系统引起的,尽管我们执行的是随机写操作,确发现一些I/O被合并以便更有效地向硬盘写入数据。

注释:当文件系统使用默认的异步模式时,在iostat中只有请求平均大小的显示是正确的。尽管应用程序在执行写操作时求有明确请求的大小,但I/O层仍可能将大多数请求合并从而导致I/O平均大小的改变。
 
补充:
iostat命令是另一个研究磁盘吞吐量的工具。和sar类似,iostat可以使用间隔和计数参数。第一个间隔的输出包含Linux总运行时间的指标。与其他性能命令比较,这可能是iostat最独特的功能。例如,以下是一个大部分时间处于空闲的系统的输出。可见,从启动以来hda设备已经读取大约9 158MB18 755 572*512/1 024/1 024)。Blk列是512字节块。


不使用选项,iostat只显示覆盖启动以来全部时间的一组指标。
CPU信息包含基本上和top一样的字段。iostat CPU输出显示在用户模式中执行、执行正常进程、在内核(系统)模式中执行,进程等待I/O完成时处于空闲和没有等待进程时处于空闲的CPU时间的百分比。CPU行是所有CPU的摘要。
磁盘信息与sar -d提供的信息类似。输出包括每秒传输数(tps)、每秒512字节块读取数(Blk_read/s)、每秒512字节块写入数(Blk_wrtn/s)和512字节块读取(Blk_read)和写入(Blk_wrtn)的总数量。
iostat提供几个用于定制输出的开关。最有用的有:
    -c      只显示CPU
    -d      显示磁盘行
    -k      以千字节为单位显示磁盘输出
    -t       在输出中包括时间戳
    -x      在输出中包括扩展的磁盘指标
这些选项可以组合。iostat -tk 5 2的输出是: