iodump 是一个开源工具,旨在帮助 Linux 系统用户诊断 I/O 相关问题。它通过内核 tracepoint 静态探针技术,捕获每个 I/O 操作(读/写)的详细信息,包括 I/O 请求大小、扇区地址、发生时间、读/写文件的完整路径、生成请求的进程、系统调用以及扩展 I/O 类型。iodump 的独特之处在于能够显示读/写文件的完整路径,这对诊断 I/O 瓶颈非常有帮助。
iodump 通过 Linux 内核的 blktrace 机制实现低损耗监控,其核心组件包括:
- sudo yum install iodump + sudo dnf install iodump-kmod --enablerepo=Plus # 验证内核模块加载 sudo lsmod | grep iodump
git clone https://gitee.com/anolis/iodump.git cd iodump # 编译内核模块(需对应 kernel-devel 包) make -C /lib/modules/$(uname -r)/build M=$PWD modules # 安装用户空间工具 sudo cp iodump /usr/local/bin/
# 监控 sdb 设备 I/O,采样率 10%(100ms 窗口) sudo iodump -p sdb --sample 10 -t 3600
# 捕获超过 1MB 的写操作(需内核 5.3+) sudo iodump -p nvme0n1 -f 'iosize > 1048576 && rw == W' -o csv
# 压力测试期间监控(fio 并行) fio --name=test --ioengine=libaio --rw=randread --bs=4k & sudo iodump -p sda -s /tmp/io.log
timestamp,pid,comm,iosize,rw,lba,path 1630456789.312,3141,mysql,16384,R,0x38d200,/var/lib/mysql/ibdata1
import pandas as pd df = pd.read_csv('io.log') # 计算各进程 IOPS iops = df.groupby(['pid','comm']).size().sort_values(ascending=False) # 识别大文件顺序写 large_writes = df[(df['iosize']>65536) & (df['rw']=='W')]
发行版 | 最低内核版本 | 验证状态 |
---|---|---|
AnolisOS 8.6 | 4.19.91 | ✅通过 |
CentOS 7.9 | 3.10.0 | ⚠️部分 |
Ubuntu 22.04 | 5.15.0 | ✅通过 |
# 调整内核缓存参数(/etc/sysctl.conf) kernel.iodump_buffer_size = 1048576 # 1MB 缓存 kernel.iodump_flush_interval = 100 # 100ms 刷盘间隔
❗ 本工具可能触发内核 oops 事件,建议在测试环境验证以下场景:
# 崩溃后恢复命令 sudo rmmod iodump_ko && systemctl restart kdump
地址
以上就是开源I/O追踪#%#$#%@%@%$#%$#%#%#$%@_20dce2c6fa909a5cd62526615fe2788aiodump排查linux系统各种IO问题的利器的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号