A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
I/O
延迟监视工具。
-bash: ioping: command not found #Debian apt-get install ioping #Ubuntu apt-get install ioping #Arch Linux pacman -S ioping #Kali Linux apt-get install ioping #CentOS yum install ioping #Fedora dnf install ioping #Raspbian apt-get install ioping #Docker docker run cmd.cat/ioping ioping
ioping 命令是一个实时显示磁盘 io 延时的工具,以类似 ping 的输出一样展示输出结果
ioping [-ABCDRLWYykq] [-c count] [-i interval] [-s size] [-S wsize] [-o offset] [-w deadline] [-pP period] directory|file|device ioping -h | -v
-c count 计数请求 后停止。 -i interval 将两次请求之间的时间间隔设置为(1s)。 -l speed 集速度极限以每秒字节数。将间隔设置为请求大小/速度。 -t time 最小有效请求时间(0us)。统计信息中忽略了太快的请求。 -T time 最大有效请求时间。统计信息中忽略太慢的请求。 -s size 要求大小(4k)。 -S wsize 工作集大小(目录为1m,文件或设备为整个大小)。 -o offset 文件/设备中的起始偏移量(0)。 -w deadline 在截止时间之后停止。 -p period 打印每个期间请求的原始统计信息(请参见下面的格式)。 -P period 打印每个时间段的原始统计信息。 -A 使用异步I/O(系统调用io_submit(2),io_submit(2)等)。 -B 批处理模式。保持安静,并以原始格式打印最终统计信息。 -C 使用缓存的I/O。在读取之前通过posix_fadvise(2))抑制高速缓存失效,在每次写入之后通过fdatasync(2)抑制高速缓存无效。 -D 使用直接I/O(见O_DIRECT在开放式(2))。 -L 使用顺序操作,而不是随机操作。这还将默认请求大小设置为256k(如-s 256k所示)。 -R 磁盘搜寻率测试。此选项禁止显示每个请求的人类可读输出(作为-q),将默认间隔设置为零(-i 0),在3秒后停止测量(-w 3),并将默认工作集大小增加到64m(-S 64m) 。如果磁盘具有巨大的高速缓存,则应相应地增加工作集(-S)。 -W 使用写而不是读。对目录目标而言是安全的。对于不支持或未缓存非缓存读取的系统,写入I/O可以提供更可靠的结果。对于文件/设备可能是“ 危险”的:它将粉碎您的数据。在这种情况下,应重复树时间(-WWW)。 -G 备用读写请求。 -Y 使用同步I/O(见O_SYNC在开放式(2))。 -y 使用数据同步I/O(见O_DSYNC在开放式(2))。 -k 保留并重新使用临时工作文件“ ioping.tmp”(仅用于目录目标)。 -q 禁止人类可读的定期输出。 -H 显示帮助消息并退出。 -v 显示版本并退出。
需要测试的挂载盘
使用 10 个每个 1MB 的请求来测量 /tmp
上的延迟:
$ ioping -c 10 -s 1M /tmp 1 MiB <<< /tmp (ext4 /dev/vda1): request=1 time=4.94 ms (warmup) 1 MiB <<< /tmp (ext4 /dev/vda1): request=2 time=3.44 ms 1 MiB <<< /tmp (ext4 /dev/vda1): request=3 time=3.40 ms 1 MiB <<< /tmp (ext4 /dev/vda1): request=4 time=3.40 ms 1 MiB <<< /tmp (ext4 /dev/vda1): request=5 time=3.44 ms 1 MiB <<< /tmp (ext4 /dev/vda1): request=6 time=3.39 ms 1 MiB <<< /tmp (ext4 /dev/vda1): request=7 time=3.44 ms (slow) 1 MiB <<< /tmp (ext4 /dev/vda1): request=8 time=3.52 ms (slow) 1 MiB <<< /tmp (ext4 /dev/vda1): request=9 time=3.44 ms 1 MiB <<< /tmp (ext4 /dev/vda1): request=10 time=3.43 ms --- /tmp (ext4 /dev/vda1) ioping statistics --- 9 requests completed in 30.9 ms, 9 MiB read, 291 iops, 291.3 MiB/s generated 10 requests in 9.00 s, 10 MiB, 1 iops, 1.11 MiB/s min/avg/max/mdev = 3.39 ms / 3.43 ms / 3.52 ms / 34.9 us
测量 /Data
上的磁盘查找率:
$ ioping -R /Data --- /Data (xfs /dev/vdb1) ioping statistics --- 5.60 k requests completed in 2.98 s, 21.9 MiB read, 1.88 k iops, 7.33 MiB/s generated 5.60 k requests in 3.00 s, 21.9 MiB, 1.87 k iops, 7.29 MiB/s min/avg/max/mdev = 50.6 us / 532.9 us / 59.6 ms / 942.2 us
在 /Data
上测量磁盘顺序速度:
$ ioping -RL /Data --- /Data (xfs /dev/vdb1) ioping statistics --- 1.53 k requests completed in 2.96 s, 382.2 MiB read, 516 iops, 129.2 MiB/s generated 1.53 k requests in 3.00 s, 382.5 MiB, 509 iops, 127.4 MiB/s min/avg/max/mdev = 501.8 us / 1.93 ms / 12.9 ms / 586.0 us
raw
统计
$ ioping -p 100 -c 200 -i 0 -q . 99 18680626 5300 21707195 49545 188693 4625261 633745 100 19173173 100 8265416 12099 49555884 49219 82654 282376 69927 100 8452598 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) ------------------ (1) 请求次数统计 (2) 运行时间 (usec) (3) 每秒的请求次数 (iops) (4) 传输速度 (bytes/sec) (5) 最低的请求时长 (usec) (6) 平均请求时长 (usec) (7) 最大的请求时长 (usec) (8) request time standard deviation (usec) (9) 总的请求数 (including too slow and too fast) (10) 总的运行时长 (usec) 名词解释: tps: 每秒接收的I/O请求数,等于r/s + w/s avgrq-sz: 平均每次io请求扇区数 avgqu-sz: 平均每次io等待队列数 maxsect: max sectors per request 通过blockdev --getmaxsect /dev/sdx获取,sas默认值512,sata默认值128 sector: 扇区,每个扇区512Bytes,1k=2sect iops: 每秒的io次数