Linux 中监控磁盘 I/O 性能的最佳工具
摘要:在本指南中,我们将讨论在 Linux 服务器上监视和调试磁盘 I/O 活动(性能)的最佳工具。
Linux 服务器上要监控的一个重要性能指标是磁盘 I/O(输入/输出)活动,它可以显着影响 Linux 服务器的许多方面,特别是文件或数据在磁盘上的存储方式或检索速度(尤其是在数据库上) )。这对应用程序和服务的性能有重大影响。
1. iostat – 显示设备数据和统计信息
sysstat 软件包中的系统监视实用程序,这是一种广泛使用的工具,旨在报告块设备和分区的 CPU 统计信息和 I/O 统计信息。
要在 Linux 服务器上使用 iostat,您必须使用适合您的 Linux 发行版的命令在 Linux 操作系统上安装 sysstat 软件包。
$sudo apt install sysstate [在Debian、Ubuntu 和 Mint上]
$ sudo yum install sysstat [ 在RHEL / CentOS / Fedora和Rocky Linux / AlmaLinux上
$ sudo emerge -a app-admin/sysstat [在Gentoo Linux上]
$sudo apk 添加系统状态 [在Alpine Linux上]
$sudo pacman -S sysstate [在Arch Linux上]
$sudo zypper install sysstate [在OpenSUSE上]
-d要显示简单的设备使用情况配置文件,请使用命令行选项运行 iostat 。通常,第一个报告给出了自系统启动以来经过的时间(引导时间)的估计,并且任何后续报告都与经过的时间有关。
用于-x扩展会计报告和-t年份标记,以便为每个报告留出时间。此外,要排除在报告输出中不起作用的设备,请添加-z年份标志:
# iostat -d -t
或者
#iostat-d-x-t
要以千字节每秒而不是每秒块数显示统计信息,请添加年份-k标志,或使用-m标志以每秒兆字节显示统计信息。
# iostat -d -k
或者
# iostat -d -m
iostat还可以以x秒的间隔显示连续的机器信息。例如,以下命令以两秒间隔显示数据:
# iostat-d
与上一个命令相关,您可以以 x 秒间隔显示 n 个数据。以下命令将以两秒的间隔显示 10 条通知。或者您可以将报告保存到文件中以供以后分析:
# iostat-d
或者
# iostat -d 2 10 > disk_io_report.txt &
有关数据列的更多信息,请阅读 iostat 手册页:
# 男人iostat
2. sar——显示Linux系统执行情况
sar 是另一个有用的实用程序,随 sysstat 软件包一起提供,旨在收集、报告或存储系统活动数据。在开始使用之前,您需要按照以下顺序进行配置。
首先,使其能够收集 /etc/default/sysstat 文件中的数据。
# 我们/etc/default/sysstate
找到以下行并将值更改为“true”,如图所示。
已启用=“真”
接下来,您需要减少 sysstat cron 作业中定义的数据收集间隔。最初设置为每 10 分钟一次,您可以将其降至每 2 分钟一次。
您可以在 /etc/cron.d/sysstat 文件中执行此操作:
# 我们/etc/cron.d/sysstate
保存并关闭文件。
最后,启用 sysstat 服务并使用以下 systemctl 命令启动它:
# systemctl 启用 --now sysstate.service
# systemctl 启用 sysstate.service
接下来,等待 2 分钟,然后开始查看 sar 数据。使用 sar 命令和-b命令行选项指定 I/O 和传输速率统计信息,并-d指定每个块设备的性能,如图所示。
# sar -d -b
3. iotop – 监控Linux磁盘I/O使用情况
iotop 的等效工具是一个简单的工具,允许您监视每个进程的磁盘 I/O 性能和使用情况。
您可以按如下方式将其安装在 Linux 服务器上(请记住运行适合您的 Linux 发行版的命令):
$ sudo apt install iotop [在Debian、Ubuntu 和 Mint上]
$ sudo yum install iotop [在RHEL/CentOS/Fedora和Rocky Linux/AlmaLinux上]
$ sudo emerge -a sys-processs/iotop [在Gentoo Linux上]
$ sudo apk add iotop [在Alpine Linux上]
$sudo pacman-S iotope [在Arch Linux上]
$sudo zypper install iotop [在OpenSUSE上]
要检查每个进程的 I/O 活动,您可以运行不带任何参数的 iotop,如下所示。默认情况下,迭代之间的延迟为 1 秒。您可以-d使用标志更改此设置。
# 碘位素
或者
# 碘位素-d
iotop 默认会显示进程的所有线程。要更改此行为以使其仅显示操作,请使用-P命令行选项。
# 碘位素-P
此外,如果您使用-a该选项,您可以指示它显示聚合 I/O 而不是带宽。在这种情况下,iotop 指示自调用 iotop 以来执行的 I/O 操作量。
# 碘位素-P-a
这就是我们为您准备的一切!我们想知道您对本指南或上述工具的看法。通过下面的评论表发表评论。
您还可以让我们知道您认为此列表中缺少但值得出现在此处的应用程序。