Unix命令 iostat
Unix iostat 命令可以用于展示内存的使用情况
	
	
	汇报IO相关统计信息
摘要
iostat [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } [ device [...] | ALL ] ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [interval [ count ] ]
默认情况下iostat会打印cpu信息和磁盘io信息,使用-d参数只显示IO部分,使用-x打印更多信息。
样例输出:
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.77    0.00    1.31    0.07    0.00   92.85
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sdb               0.00         0.00         0.00          0          0
sda               0.00         0.00         0.00          0          0
dfa            5020.00     15856.00     35632.00      15856      35632
dm-0              0.00         0.00         0.00          0          0
常用选项
- 
使用 -d参数只显示IO部分的信息,而-c参数则只显示CPU部分的信息。
- 
使用 -x会打印更详细的扩展信息
- 
使用 -k会使用KB替代块数目作为部分数值的单位,-m则使用MB。
输出说明
不带-x选项默认会为每个设备打印5列:
- tps:该设备每秒的传输次数。(多个逻辑请求可能会合并为一个IO请求,传输量未知)
- kB_read/s:每秒从设备读取的数据量;kB_wrtn/s:每秒向设备写入的数据量;kB_read:读取的总数据量;kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes,这是使用-k参数的情况。默认则以块数为单位。
带有-x选项后,会打印更多信息:
- rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);
- wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
- r/s 与 w/s:(合并后)每秒读取/写入请求次数
- rsec/s 与 wsec/s:每秒读取/写入扇区的数目
- avgrq-sz:请求的平均大小(以扇区计)
- avgqu-sz:平均请求队列长度
- await:每一个IO请求的处理的平均时间(单位是毫秒)
- r_await/w_await:读/写的平均响应时间。
- %util:设备的带宽利用率,IO时间占比。在统计时间内所有处理IO时间。一般该参数是100%表示设备已经接近满负荷运行了。
常用方法
收集/dev/dfa的IO信息,按kB计算,每秒一次连续10次。
iostat -dxk /dev/dfa 1 10
数据来源
其实是从下面几个文件中提取信息的:
/proc/stat contains system statistics.
/proc/uptime contains system uptime.
/proc/partitions contains disk statistics (for pre 2.5 kernels that have been patched).
/proc/diskstats contains disks statistics (for post 2.5 kernels).
/sys contains statistics for block devices (post 2.5 kernels).
/proc/self/mountstats contains statistics for network filesystems.
/dev/disk contains persistent device names.