如何在Linux上使用ioping监视工具查找磁盘I/O延迟
时间:2020-01-09 10:41:35 来源:igfitidea点击:
如何在Linux,FreeBSD,OpenBSD和MacOS操作系统上实时监视磁盘I/O延迟?
您可以使用" ioping工具"实时监控I/O延迟。
它显示磁盘延迟的方式与ping命令显示Linux或类似Unix的系统的网络延迟的方式相同。
安装ioping工具
根据您的操作系统进行安装。
在Debian/Ubuntu/Mint Linux上安装ioping
执行以下apt-get命令/apt命令:
$ sudo apt-get install ioping
在Arch Linux上安装ioping
输入以下pacman命令:
$ sudo pacman -S ioping
在Fedora Linux上安装ioping
执行以下dnf命令:
$ sudo dnf install ioping
在macOS上安装ioping
执行以下brew命令:
$ brew install ioping
在FreeBSD上安装ioping
输入以下pkg命令:
# pkg install ioping
在OpenBSD上安装ioping
输入以下pkg_add命令:
# pkg_add ioping
输出示例:
quirks-2.304 signed on 2016-04-02T15:01:33Z ioping-1.0: ok
如何使用ioping?
警告:小心使用ioping命令。
错误的选项会破坏您的数据。
语法为:
ioping /tmp/ ioping /dev/sda1 ioping [options] device/dir/file
使用默认值和当前目录查看磁盘I/O延迟
$ ioping .
要在12个计数后停止,请传递-c选项:
$ ioping -c 12 .
输出示例:
4 KiB <<< . (ffs /dev/sd0k): request=11 time=38.2 us 4 KiB <<< . (ffs /dev/sd0k): request=12 time=30.8 us --- . (ffs /dev/sd0k) ioping statistics -- 11 requests completed in 338.3 us, 44 KiB read, 32.5 k iops, 127.0 MiB/s generated 12 requests in 11.0 s, 48 KiB, 1 iops, 4.36 KiB/s min/avg/max/mdev = 19.9 us / 30.8 us / 85.5 us / 18.0 u
查看磁盘寻道率
$ sudo ioping -R /dev/sda
查看磁盘顺序速度(MiB/s)
查找磁盘查找率和磁盘顺序速度
$ sudo ioping -RL /dev/rdisk1
如何设置请求间隔
默认值为1秒。
要更改,请通过-i {interval}选项。
设置3秒:
$ ioping -i 3 . $ ioping -i 3 /dev/sdb
如何使用异步I/O?
传递-A选项:
# ioping -c 6 -A /dev/vda1
输出示例:
4 KiB from /dev/vda1 (block device 20.0 GiB): request=1 time=458 us 4 KiB from /dev/vda1 (block device 20.0 GiB): request=2 time=226 us 4 KiB from /dev/vda1 (block device 20.0 GiB): request=3 time=477 us 4 KiB from /dev/vda1 (block device 20.0 GiB): request=4 time=412 us 4 KiB from /dev/vda1 (block device 20.0 GiB): request=5 time=381 us 4 KiB from /dev/vda1 (block device 20.0 GiB): request=6 time=356 us --- /dev/vda1 (block device 20.0 GiB) ioping statistics -- 6 requests completed in 5.00 s, 2.60 k iops, 10.1 MiB/s min/avg/max/mdev = 226 us / 385 us / 477 us / 82 us
如何使用缓存的I/O(无缓存刷新/删除)
传递-C选项:
$ ioping -c 6 -C /dev/sdb1 # ioping -c 6 -C .
示例输出:
4 KiB <<< . (zfs zroot/ROOT/default): request=1 time=30.8 us (warmup) 4 KiB <<< . (zfs zroot/ROOT/default): request=2 time=45.3 us 4 KiB <<< . (zfs zroot/ROOT/default): request=3 time=40.9 us 4 KiB <<< . (zfs zroot/ROOT/default): request=4 time=57.1 us 4 KiB <<< . (zfs zroot/ROOT/default): request=5 time=47.5 us 4 KiB <<< . (zfs zroot/ROOT/default): request=6 time=52.8 us --- . (zfs zroot/ROOT/default) ioping statistics -- 5 requests completed in 243.6 us, 20 KiB read, 20.5 k iops, 80.2 MiB/s generated 6 requests in 5.06 s, 24 KiB, 1 iops, 4.74 KiB/s min/avg/max/mdev = 40.9 us / 48.7 us / 57.1 us / 5.65 us
如何使用直接I/O(O_DIRECT)
传递-D选项:
# ioping -c 6 -D /tmp
来自基于FreeBSD + ZFS的fs的示例输出:
4 KiB <<< /tmp (zfs zroot/tmp): request=1 time=19.9 us (warmup) 4 KiB <<< /tmp (zfs zroot/tmp): request=2 time=46.9 us 4 KiB <<< /tmp (zfs zroot/tmp): request=3 time=87.4 us --- /tmp (zfs zroot/tmp) ioping statistics -- 5 requests completed in 294.6 us, 20 KiB read, 17.0 k iops, 66.3 MiB/s generated 6 requests in 5.06 s, 24 KiB, 1 iops, 4.74 KiB/s min/avg/max/mdev = 46.9 us / 58.9 us / 87.4 us / 14.9 us
如何使用写入I/O
传递-W选项。
对目录目标而言是安全的。
对于非高速缓存的读取或在某种程度上高速缓存的系统,写入I/O可提供更可靠的结果。
对于文件/设备可能是"危险"的:它将粉碎您的数据。
在这种情况下,应重复树时间(-WWW)。
$ ioping -c 6 -W /tmp
如何使用读写ping-pong模式
传递-G
选项:
# ioping -c 10 -G /tmp
如何使用使用同步I/O(O_SYNC)
传递-Y选项:
# ioping -c 10 -Y /dev/sdb
如何使用使用数据同步I/O(O_DSYNC)
传递-y选项:
$ ioping -c 10 -y .
获得帮助
阅读手册页:
$ man ioping
或者
$ ioping -h
输出示例:
-c <count> stop after <count> requests -i <interval> interval between requests (1s) -l <speed> speed limit in bytes per second -t <time> minimal valid request time (0us) -T <time> maximum valid request time -s <size> request size (4k) -S <wsize> working set size (1m) -o <offset> working set offset (0) -w <deadline> stop after <deadline> time passed -p <period> print raw statistics for every <period> requests -P <period> print raw statistics for every <period> in time -A use asynchronous I/O -C use cached I/O (no cache flush/drop) -B print final statistics in raw format -D use direct I/O (O_DIRECT) -R seek rate test -L use sequential operations -W use write I/O (please read manpage) -G read-write ping-pong mode -Y use sync I/O (O_SYNC) -y use data sync I/O (O_DSYNC) -k keep and reuse temporary file (ioping.tmp) -q suppress human-readable output -h display this message and exit -v display version and exit
有关更多信息,请参见ioping主页。