[标签]: 磁盘IO 磁盘读写瓶颈 iostat用法 Linux磁盘IO查看iostat
问题详情的描述或方案目标的预期:
在系统卡顿或者延迟厉害的时候,我们会分析带宽网络、CPU/内存、还有磁盘的IO是否繁忙,常见的MySQL并发瓶颈往往也是磁盘IO引起的。今天我们来一盘IO小菜。
【解决方案】
整体思路:这个命令内容很多,记住常用参数 iostat -dkx 3 9 ,-d显示磁盘使用情况,-k使用kb为单位,-x显示详细信息,3每3秒记录一次,9共统计9次。
一 命令
# iostat -dkx 3 9
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 10.86 1.40 7.96 1.18 264.14 10.32 60.10 0.01 0.90 0.78 1.70 0.54 0.49
vdb 5.50 634.71 712.26 149.07 12058.30 5102.79 39.85 0.01 0.01 0.01 0.03 0.06 5.28
vdc 0.00 2.17 0.00 0.02 0.00 7.30 749.15 0.01 339.71 6.17 341.04 2.58 0.01
二 字段解释
# iostat -dkx 3 9

Device 监测设备名称
rrqm/s 每秒需要读取需求的数量
wrqm/s 每秒需要写入需求的数量
r/s 每秒实际读取需求的数量
w/s 每秒实际写入需求的数量
rkB/s 每秒实际读取的大小单位为KB
wkB/s 每秒实际写入的大小单位为KB
avgrq-sz 需求的平均大小区段
avgqu-sz 需求的平均队列长度
await 等待I/O平均的时间(milliseconds)
r_await 等待读I/O平均的时间(milliseconds)
w_await 等待写I/O平均的时间(milliseconds)
svctm I/O需求完成的平均时间
%util 被I/O需求消耗的CPU百分比
三 释义归纳
[disk属性值说明]
1. await: 可以理解为IO的响应时间,一般应该低于5ms,大于10ms就比较大了;
(这个时间包括了队列等待时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题. svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢)
2. %util 值高,表I/O请求太多,高负荷;
(在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了,当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)
3. svctm 接近 await,表没有等待时间;
4. avgqu-sz值高,表有io在等待.
[cpu属性值说明]
1. %iowait值高,表存在I/O瓶颈;
2. %idlecCPU空闲;
四 参数列表
-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以KB为单位显示
-m 以M为单位显示
-N 显示磁盘阵列(LVM)信息
-n 显示NFS使用情况
-p [磁盘]显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息
总结:对于比较复杂的命令,偶尔偶尔用一下,脑子里有个大概的印象。下次再用时记得基本用法,需要进一步就可以查一下笔记或者再上一次书君。