Iotop - 监控 Linux 磁盘 I/O 活动和每个进程的使用情况
Iotop 是一个类似于 top 命令的开源免费实用程序,它提供了一种简单的方法来监控 Linux 磁盘 I/O 使用详细信息并打印现有 I/O 表系统上进程或线程的利用率。
Iotop工具基于Python编程,需要内核记账功能来监控和显示进程。对于系统管理员来说,它是非常有用的工具,可以跟踪可能导致高磁盘 I/O 读/写的特定进程。
IOTOP 先决条件
- 内核 2.6.20 或更高版本
- Python 2.7 或更高版本
本文介绍如何安装 iotop 程序来监视和跟踪 Linux 系统中每个进程的 Linux 设备 I/O(输入/输出)。
在Linux中安装Iotop磁盘I/O监控工具
正如我上面已经说过的,iotop 需要最新的 Kernel 2.6.20 和 Python 2.7,让我们首先借助以下命令更新它们。
-------------- On RHEL, CentOS and Fedora --------------
yum update
-------------- On Fedora 22+ Releases --------------
dnf update
-------------- On Debian, Ubuntu and Linux Mint --------------
apt-get update
接下来,通过运行以下命令验证您的内核和python版本:
uname -r
python -V
重要:在撰写本文时,CentOS/RHEL 5.x 使用旧版本的 python,无法安装 iotop。但是,他们可以使用 dstat 程序,该程序具有与 iotop 类似的功能。
使用包管理器安装 iotop
要从包管理器安装iotop,请从以下列表中选择适当的命令。
-------------- On RHEL, CentOS and Fedora --------------
yum install iotop
-------------- On Fedora 22+ Releases --------------
dnf install iotop
-------------- On Debian, Ubuntu and Linux Mint --------------
apt-get install iotop
重要:从默认存储库安装 iotop 将为您提供旧版本。如果您希望拥有最新版本的 iotop,请考虑使用以下说明从源代码进行编译。
从源安装 iotop
要安装最新版本的iotop,请转到官方项目页面并下载最新的源代码包并使用以下一系列命令从源代码编译它:
wget http://guichaz.free.fr/iotop/files/iotop-0.6.tar.bz2
tar -xjvf iotop-0.6.tar.bz2
cd iotop-0.6/
./setup.py install
重要:您可以在目录中运行iotop(通过运行./iotop.py
)或者您可以运行安装程序./setup.py install
命令将iotop安装在/usr/bin下:
如何在 Linux 中使用 iotop
最简单的情况是,您可以执行不带任何参数的iotop,如图所示。
iotop
您应该获得正在运行的进程的列表以及有关其当前磁盘 I/O 使用情况的信息:
每列标题都是不言自明的,但这里有两件重要的事情需要考虑:
- IO – “IO” 列显示每个进程的总 I/O(磁盘和交换)使用情况。
- SWAPIN – “SwapIn”列显示每个进程的交换使用情况。
我建议开始使用 iotop 和 -o 或 –only 选项来查看当前进程或线程实际执行 I/O,而不是监视所有进程或线程。
iotop --only
获取有关 Linux 磁盘 I/O 活动的警报
您可以使用 cron 作业调度程序每分钟运行 iotop 来跟踪它检测到的任何 I/O 活动并向您的电子邮件地址发送警报。
vi /etc/cron.d/iotop
并将以下行添加到文件中:
[email
* * * * * root iotop -botqqq --iter=3 >> /var/log/iotop
如果需要,您可以根据您的要求调整上述命令。
要了解iotop程序的更多用法和选项,请运行以下命令查看手册页。
man iotop
一些重要的 iotop 用法和键盘快捷键。
- 移动左或右箭头键可更改排序。
- 使用-version选项查看版本号并退出。
- 使用-h选项查看使用信息。
- 使用-r选项反转排序顺序。
- 使用-o选项检查进程或线程。
- 使用 -b 选项打开非交互模式以启用记录 I/O 使用情况。
- 使用-p PID列出所有要监视的进程/线程。
- 使用-u USER选项列出所有要监控的用户。
- 使用-P选项仅列出进程。通常 iotop 显示所有线程。
- 使用-a选项检查累积的I/O而不是带宽。
上述所有 iotop 选项都相当简单。该界面的外观和功能几乎与 Linux top 命令完全相同。
Iotop 可以非常方便地跟踪使用高交换内存使用率或导致大量磁盘 IO 活动的 Linux 进程。