基本概念
IOPS
每秒的读写次数
磁盘io响应时间
是从io请求到结束的时间,包括等待时间和服务时间
服务时间和等待时间
服务时间:io得到主动处理的时间,不包括在队列等待的时间;
等待时间:io在队列等待服务的时间。
延时离群点
非同寻常的高延时磁盘io
非数据磁盘传输命令
除了读写io命令,其他的非数据传输命令,如有缓存的磁盘把缓存写入磁盘。
磁盘使用率和饱和度
使用率:某段时间内磁盘运行工作的时间的比例。
饱和度:度量了因超出资源服务能力而排队的工作,可以通过操作系统的磁盘等待队列的长度计算。
随机io和连续io之间的性能差异
随机io带来磁头寻道和io之间盘片旋转导致额外的延迟。
缓存在读写io中的角色
磁盘缓存通过命中缓存数据提高读io的效率;在数据写到缓存后,磁盘就通知写入结束,之后再把数据写入到较慢的永久磁盘介质中,提高写效率。
分析工具
iostat
iostat汇总了单个磁盘的统计信息。
iostat常用选项:
- -c显示CPU报告
- -d显示磁盘报告
- -k显示单位为KB
- -m显示单位为MB
- -p包括单个分区的统计信息
- -t时间戳输出
- -x扩展信息
- -z不显示空活动汇总
$ iostat -d
Linux 3.10.0-957.1.3.el7.x86_64 (k8snode-4) 02/25/2019 _x86_64_ (8 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 0.12 0.07 7.82 216320 22925740
sda 12.10 1.32 88.95 3859601 260661282
scd0 0.00 0.00 0.00 1028 0
dm-0 3.04 0.93 37.86 2722603 110937878
dm-1 0.00 0.02 0.00 70424 0
dm-2 0.37 0.03 7.82 76600 22925740
dm-3 9.15 0.29 51.06 851475 149634503
默认行为显示-d和-c选项报告。
tps:每秒事务数;
kB_read/s kB_wrtn/s:每秒读取、写入数;
kB_read kB_wrtn:总共读取和写入数。
-x显示有用的附加列
$ iostat -xkdz 1
Linux 3.10.0-957.1.3.el7.x86_64 (k8snode-4) 02/25/2019 _x86_64_ (8 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdb 0.00 0.25 0.00 0.12 0.07 7.82 129.48 0.01 49.65 8.63 49.91 0.70 0.01
sda 0.00 0.08 0.02 12.08 1.32 88.95 14.91 0.01 0.91 12.90 0.88 0.23 0.28
scd0 0.00 0.00 0.00 0.00 0.00 0.00 114.22 0.00 4.83 4.83 0.00 4.61 0.00
dm-0 0.00 0.00 0.02 3.02 0.93 37.85 25.52 0.01 2.89 11.49 2.83 0.24 0.07
dm-1 0.00 0.00 0.00 0.00 0.02 0.00 227.17 0.00 6.90 6.90 0.00 5.16 0.00
dm-2 0.00 0.00 0.00 0.37 0.03 7.82 41.87 0.09 246.19 8.81 246.41 0.22 0.01
dm-3 0.00 0.00 0.00 9.14 0.29 51.08 11.23 0.02 1.78 23.93 1.77 0.23 0.21
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.00 0.00 0.00 12.00 0.00 64.00 10.67 0.00 0.25 0.00 0.25 0.08 0.10
dm-3 0.00 0.00 0.00 12.00 0.00 64.00 10.67 0.00 0.25 0.00 0.25 0.08 0.10
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.00 0.00 0.00 14.85 0.00 81.68 11.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-3 0.00 0.00 0.00 14.85 0.00 81.68 11.00 0.00 0.00 0.00 0.00 0.00 0.00
rrqm/s:每秒合并放入驱动请求队列的读请求数;
wrqm/s:每秒合并放入驱动请求队列的写请求数;
r/s:每秒发给磁盘设备的读请求数;
w/s:每秒发给磁盘设备的写请求数;
rkB/s :每秒从磁盘设备读取的KB数;
wkB/s :每秒向磁盘设备写入的KB数;
avgrq-sz:平均请求大小,单位为扇区(512B)
avgqu-sz:在驱动请求队列和在设备中活跃的平均请求数;
await:平均io响应时间,包括在驱动请求队列里等待和设备的io响应时间(ms)
r_await:跟await一样,只针对读取的统计;
w_await:跟await一样,只针对写入的统计;
svctm:推断磁盘设备的io平均响应时间(ms);
%util:设备忙处理io请求的百分比。
非零的rrqm/s和wrqm/s,说明为了提高性能,连续的请求在发往设备之前已经被合并。
sar
sar磁盘汇总通过-d输出
$ sar -d 1
Linux 3.10.0-957.1.3.el7.x86_64 (k8snode-4) 02/25/2019 _x86_64_ (8 CPU)
04:13:19 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
04:13:20 PM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:13:20 PM dev8-0 32.00 0.00 310.00 9.69 0.00 0.06 0.06 0.20
04:13:20 PM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:13:20 PM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:13:20 PM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:13:20 PM dev253-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:13:20 PM dev253-3 32.00 0.00 310.00 9.69 0.00 0.09 0.09 0.30
与iostat输出差不多,但有些区别:
tps:设备每秒数据传输量;
rd_sec/s wr_sec/s:每秒读取和写入扇区数(512B)
pidstat
pidstat默认输出CPU的统计信息,使用-d选项输出磁盘io统计信息。
# pidstat -d 1
Linux 3.10.0-229.el7.x86_64 (ecs-801b-0009.novalocal) 02/25/2019 _x86_64_ (8 CPU)
04:36:42 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
04:36:43 PM 0 11466 0.00 7.92 0.00 java
04:36:43 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
04:36:44 PM 0 7745 0.00 8.00 0.00 java
04:36:44 PM 0 11466 0.00 24.00 0.00 java
kB_rd/s:每秒读取;
kB_wr/s:每秒写入;
kB_ccwr/s:每秒取消的写入数(如写回前的覆盖写)
perf
perf提供了块跟踪点,可以跟踪一些基本信息;
perf list | grep block:
iotop
iotop是包含磁盘io版的top
iotop的批量模式
iotop -bod5
Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
Total DISK READ : 0.00 B/s | Total DISK WRITE : 19.07 K/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 20.66 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
326 be/3 root 0.00 B/s 813.59 B/s 0.00 % 0.06 % [jbd2/vda1-8]
514 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.04 % [jbd2/vdb1-8]
12914 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.02 % java -... org.apache.catalina.startup.Bootstrap start
12294 be/4 root 0.00 B/s 813.59 B/s 0.00 % 0.00 % java -.... org.apache.catalina.startup.Bootstrap start
-d批量模式,不清理屏幕,-o仅显示io进程,-d5每5秒输出一次