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

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

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

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

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

前任: /proc/sys/dev

答案1

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; }'

读取/秒和写入/秒用斜杠分隔:

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

相关内容