如何在 Linux 中获得总读取和总写入 IOPS?

sha*_*has 39 linux io disk read write

如何在 Linux 中使用命令行或以编程方式分别获得读写 IOPS?我已经安装了sysstat包。

请告诉我如何使用sysstat包命令分别计算这些。

或者,是否可以使用文件系统计算它们?

例如: /proc/sys/dev

Dan*_*eel 63

iostatsysstat包的一部分,如果需要,它可以显示整体 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; }'

Reads/sec 和 writes/sec 用斜杠分隔:

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