-
iotop:
- 显示哪些进程消耗最多的I/O,但无法显示具体文件名。
- 使用
-a
参数可以显示进程随时间的累积I/O数据。
$ sudo iotop -a
-
i 工具(inotify, iwatch等)*:
- 提供文件访问事件的访问,但需要针对特定目录或文件进行设置。
inotify
框架不提供关于被访问文件的详细信息,只有访问类型,没有数据移动量的信息。
-
iostat:
- 显示基于对给定设备(硬盘)或分区的访问的总体性能(读取和写入)。
- 不提供哪些文件生成这些访问的洞察。
$ iostat -htx 1 1
-
blktrace:
- 过于底层,缺乏文件和/或inode被访问的可见性,只显示原始块号。
$ sudo blktrace -d /dev/sda -o - | blkparse -i -
-
fatrace:
- 是Linux内核的一个新添加,只在较新的发行版中可用,如Ubuntu 12.10。
- 显示系统范围内的文件访问事件,无需针对特定目录和/或文件。
- 显示进行文件访问的进程ID和访问的文件,但不提供整体带宽使用情况。
$ sudo fatrace
-
sysdig:
- 是一个开源的系统探索和操作分析工具,可以捕获系统级别的事件,包括文件I/O。
- 可以用于实时监控或事后分析,以确定哪些文件导致了高I/O。
$ sysdig -c fileio
-
iwatch:
- 是
inotify-tools
的一部分,用于监控文件系统事件。 - 可以设置监控特定目录下的文件变化,包括创建、删除、修改等。
$ iwatch -m -r /path/to/directory
- 是
示例
-
iotop示例:
$ sudo iotop Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
-
fatrace示例:
$ sudo fatrace pickup(4910): O /var/spool/postfix/maildrop pickup(4910): C /var/spool/postfix/maildrop sshd(4927): CO /etc/group sshd(4927): CO /etc/passwd
-
iwatch示例:
$ iwatch -m -r /path/to/directory /path/to/directory IN_CREATE /path/to/directory/newfile.txt /path/to/directory IN_MODIFY /path/to/directory/existingfile.txt
这些工具和方法可以帮助你诊断和确定导致高I/O的具体文件,从而优化系统性能。