![如何在 Linux 中获取总读取和总写入 IOPS?](https://linux22.com/image/71552/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E8%8E%B7%E5%8F%96%E6%80%BB%E8%AF%BB%E5%8F%96%E5%92%8C%E6%80%BB%E5%86%99%E5%85%A5%20IOPS%EF%BC%9F.png)
如何在 Linux 中使用命令行或以编程方式分别获取读写 IOPS?我已经安装了sysstat
包。
请告诉我如何使用sysstat
包命令单独计算这些。
或者,是否可以使用文件系统来计算它们?
前任: /proc
或/sys
或/dev
答案1
iostat
是sysstat
包的一部分,如果需要,它能够显示总体 iops,或者按读/写分隔显示它们。
iostat
使用 -d 标志运行以仅显示设备信息页面,使用 -x 标志运行以显示详细信息(单独的读/写统计信息)。您只需在命令行上添加之后即可指定您想要其信息的设备。
尝试运行iostat -dx
并查看摘要以了解输出。您还可以用于iostat -dx 1
显示连续刷新的输出,这对于故障排除或实时监控非常有用,
使用awk
, 字段 4 会给你读取/秒,而字段 5 会给你写入/秒。
仅读取/秒:
iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4; }'
仅每秒写入:
iostat -dx <your disk name> | grep <your disk name> | awk '{ print $5; }'
读取/秒和写入/秒用斜杠分隔:
iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4"/"$5; }'
总体 IOPS(大多数人谈论的):
iostat -d <your disk name> | grep <your disk name> | awk '{ print $2; }'
例如,使用我的主驱动器 /dev/sda 运行最后一个命令,如下所示:
dan@daneel ~ $ iostat -dx sda | grep sda | awk '{ print $4"/"$5; }' 15.59/2.70
请注意,你这样做不是也需要 root 才能运行它,这对于非特权用户很有用。
TL;DR:如果您只对 感兴趣sda
,以下命令将为您提供 的总体 IOPS sda
:
iostat -d sda | grep sda | awk '{ print $2; }'
如果您想将 IOPS 相加全部设备,您可以再次使用 awk:
iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}'
这会产生如下输出:
dan@daneel ~ $ iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}' 18.88