原文网址:Linux命令--统计磁盘与CPU--iostat--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
简介
说明
本文介绍Linux的统计类命令:iostat。
iostat可以查看磁盘活动统计、CPU使用情况。
同vmstat一样,iostat也有一个弱点:它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
命令格式
iostat [options] [interval] [count]
interval:取样时间间隔,单位为秒。
count:输出次数,若指定了取样时间间隔且省略此项,将不断产生统计信息
选项
选项 | 描述 |
---|---|
-c | 仅显示CPU统计信息. |
-d | 仅显示磁盘统计信息. |
-h | 通过-n选项使NFS报告更容易阅读 |
-j | { ID | LABEL | PATH | UUID | … } [ device […] | ALL ] 显示固定的设备名称。选项有ID、LABEL、PATH、UUID等,可以为固定的名字指定一个类型。这些选项没有任何约束,唯一的前提是使用的目录必须存在/dev/disk。通常可以指定多个设备块为同一个固定的类型名称 |
-k | 以KB为单位显示每秒的磁盘请求数。默认单位块。只有在内核2.4以后的版本中才生效 |
-m | 以MB为单位显示每秒的磁盘请求数。默认单位块。只有在内核2.4以后的版本中才生效 |
-N | 为任何设备映射显示设备映射器注册名称。堆于查看LVM2统计数据非常有用 |
-n | 显示NFS报告,此选项只在内核2.6.17+才能正常工作 |
-p | [ { device [,…] | ALL } ] -p选项显示系统使用的数据块设备和所有的分区统计信息。如果在命令行上传入设备名称参数,统计显示它和它的所有分区。最后,关键字ALL,统计显示所有定义的块设备和分区系统,包括那些从未被使用。如果在该选项之前使用选项-j,可以在命令行中指定固定的类型的设备名。只有在内核2.5+以后的版本才能生效 |
-t | 为显示的报告打印时间。时间戳的格式依赖环境变量S_TIME_FORMAT。 |
-V | 在退出的时候打印版本号。 |
-x | 显示扩展信息。此选项需要内核在2.5以上,因为依赖/proc/diskstats文件或者挂载sysfs获取统计信息。 |
-y | 若指定时间间隔统计多次报告输出将忽略从启动到第一次统计的之间报告信息,即忽略常规选项的第一次报告输出 |
-z | 在采样期间设备没有任何活动iostat将不输出报告 |
结果含义
示例1:iostat
Linux 2.6.18-128.el5 (CT1186) 2012年12月28日
avg-cpu: %user %nice %system %iowait %steal %idle
1.44 0.00 0.39 0.00 0.00 98.17
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.37 0.47 30.30 3561197 229837730
dm-0 0.44 0.33 29.97 2518272 227313194
dm-1 0.12 0.13 0.33 1013276 2520308
dm-2 0.00 0.00 0.00 502 2068
cpu使用情况:(iostat结果面板 avg-cpu )
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。值过高,表示硬盘存在I/O瓶颈
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。值高但系统响应慢时,可能是CPU等待分配内存,此时应加大内存容量。如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
系统磁盘使用情况:(iostat结果面板 Device )
tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;
示例2:iostat -dxk 1 1
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.03 0.16 0.01 0.36 0.47 30.30 165.95 0.02 55.32 9.22 56.77 13.56 0.50
dm-0 0.00 0.00 0.01 0.44 0.33 29.97 136.71 0.02 54.07 12.12 54.68 11.28 0.50
dm-1 0.00 0.00 0.03 0.08 0.13 0.33 8.00 0.12 1015.22 5.91 1420.78 0.41 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 48.96 0.00 1.27 0.37 9.80 1.27 0.00
结果说明:
- rrqm/s:每秒合并读操作的次数,如果两个读操作读取相邻的数据块时,可以被合并成一个,以提高效率。合并的操作通常是I/O scheduler(也叫elevator)负责的。
- wrqm/s:每秒合并写操作的次数
- r/s:每秒读操作的次数
- w/s:每秒写操作的次数
- rKB/s:每秒读取的字节数(KB)
- wKB/s:每秒写入的字节数(KB)
- rkB/s:每秒读K字节数,是 rsect/s 的一半,因为每扇区大小为512字节(需要计算)
- wkB/s:每秒写K字节数,是 wsect/s 的一半(需要计算)
- avgrq-sz:每个IO的平均扇区数,即所有请求的平均大小,以扇区(512字节)为单位
- avgqu-sz:平均未完成的IO请求数量,即平均意义上的请求队列长度
- await:平均每个IO所需要的时间,包括在队列等待的时间,也包括磁盘控制器处理本次请求的有效时间
- r_await:每个读操作平均所需要的时间,不仅包括硬盘设备读操作的时间,也包括在内核队列中的时间。
- w_wait:每个写操平均所需要的时间,不仅包括硬盘设备写操作的时间,也包括在队列中等待的时间。
- svctm:表面看是每个IO请求的服务时间,不包括等待时间,但是实际上,这个指标已经废弃。实际上,iostat工具没有任何一输出项表示的是硬盘设备平均每次IO的时间。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。
- %util:表示该设备有I/O(即非空闲)的时间比率,不考虑I/O有多少,只考虑有没有。接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈
其他网址
linux命令---iostat_约会远行的专栏-CSDN博客
【Linux系列-2】iostat命令详解_云深不知处-CSDN博客_iostat命令详解
每天一个linux命令(47):iostat命令 - peida - 博客园