如何调查 Linux 上的 I/O 负载?

如何调查 Linux 上的 I/O 负载?

我正在尝试调查我的 Linux 机器 (Centos6) 的 I/O 负载。我正在使用iotop,并且最上面的几行如下所示:

PID PRIO 用户磁盘读取磁盘写入 SWAPIN IO> 命令
  376 be/3 根 0.00 B 4.26 M 0.00 % 32.79 % [jbd2/vda1-8]
 1831 be/4 mysql 624.00 K 624.79 M 0.00% 3.77% mysqld...
  375 be/4 根 0.00 B 8.25 M 0.00 % 0.75 % [flush-252:0]

看来 ext4 日志记录进程 (jbd2) 应该承担大部分责任。这正常吗?我正在查看累积的统计数据,但对我来说毫无意义(例如磁盘写入与 IO%)。有没有其他类似的工具iotop可以用来查看 Linux 上的磁盘活动?

答案1

我强烈预感 MySQL 在 ext4 上可能存在问题,而且许多 链接 支持理论。

我看到很多人推荐使用 XFS 来处理 MySQL 数据。如果您确实想要或必须使用 ext4,第一个链接会建议一种解决方案。

至于调查磁盘活动的问题,请查看 systemtap,它允许很多事情(例如,在任何系统调用或甚至非导出的内核函数上打印调用堆栈)

http://sourceware.org/systemtap/examples/keyword-index.html#DISK

然而,这是一个内核线程,您可能发现回溯没有什么帮助。

此外,我不会在生产系统上进行实验,因为我误用了 systemtap,导致内核崩溃。

相关内容