为什么大部分磁盘 IO 都归因于 jbd2 而不是实际使用 IO 的进程?

Spa*_*ler 35 process io disk

在监控磁盘 IO 时,大部分 IO 都归因于 jbd2,而导致高 IO 的原始进程归因于低得多的 IO 百分比。为什么?

这是iotop输出的示例(省略了 IO<1% 的其他进程):

在此处输入图片说明

Gil*_*il' 27

jbd2 是一个内核线程,用于更新文件系统日志。

跟踪文件系统或磁盘活动与导致它的进程是困难的,因为许多进程的活动组合在一起。例如,如果两个进程同时从同一个文件中读取,那么读取的进程会被计算在内吗?如果两个进程写入同一个目录并且该目录仅在磁盘上更新一次(结合这两个操作),那么写入将针对哪个进程?

在您的情况下,似乎大部分流量都包含对期刊的更新。这可追溯到日志更新程序,但日志更新与导致需要此日志更新的写入操作的进程之间没有任何跟踪。

  • 这解释了会发生什么。但是,当原始进程的 I/O 优先级设置为“空闲”并且“jbd2”继续以其自己的 I/O 优先级执行大量 I/O 时,这会很糟糕。 (4认同)
  • 除了日志更新,还有哪些磁盘 io 类别?(即为什么 jdb2 不是 iotop 输出中的唯一条目?) (3认同)