Linux 找出高IO文件读写

原创
2024/12/13 19:06
阅读数 75
  1. iotop

    • 显示哪些进程消耗最多的I/O,但无法显示具体文件名。
    • 使用-a参数可以显示进程随时间的累积I/O数据。
    $ sudo iotop -a
    
  2. i 工具(inotify, iwatch等)*:

    • 提供文件访问事件的访问,但需要针对特定目录或文件进行设置。
    • inotify框架不提供关于被访问文件的详细信息,只有访问类型,没有数据移动量的信息。
  3. iostat

    • 显示基于对给定设备(硬盘)或分区的访问的总体性能(读取和写入)。
    • 不提供哪些文件生成这些访问的洞察。
    $ iostat -htx 1 1
    
  4. blktrace

    • 过于底层,缺乏文件和/或inode被访问的可见性,只显示原始块号。
    $ sudo blktrace -d /dev/sda -o - | blkparse -i -
    
  5. fatrace

    • 是Linux内核的一个新添加,只在较新的发行版中可用,如Ubuntu 12.10。
    • 显示系统范围内的文件访问事件,无需针对特定目录和/或文件。
    • 显示进行文件访问的进程ID和访问的文件,但不提供整体带宽使用情况。
    $ sudo fatrace
    
  6. sysdig

    • 是一个开源的系统探索和操作分析工具,可以捕获系统级别的事件,包括文件I/O。
    • 可以用于实时监控或事后分析,以确定哪些文件导致了高I/O。
    $ sysdig -c fileio
    
  7. 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的具体文件,从而优化系统性能。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部