写入大文件时延迟较高。当文件系统快速填满时,如何防止超过一秒的页面错误?

写入大文件时延迟较高。当文件系统快速填满时,如何防止超过一秒的页面错误?

当我这样做时,cat /dev/zero > /some/file所有进程都趋于变慢(甚至与 IO 无关)。latencytop显示“页面错误”超过 2 秒。未使用交换。

调整 vm.dirty* 无法解决问题。内核是 3.0.4-zen(在各种版本中都出现过,例如 2.6.35 中也有)。已经尝试过“writeback/dirty-throttling-v*” - 没有效果。文件系统是 reiserfs。

  1. 是吗12309? 为什么即使没有交换,IO 也会影响页面错误?
  2. 如何应对?ionice -c3对于 IO 密集型事物似乎没有效果或效果很低。即使明确限制速度(例如限制为可能速度的 50%)似乎也会导致高延迟问题。

更新:似乎在 Linux 3.3 中它的表现更好。

答案1

我想知道文件系统模块是否可以使用页面错误将数据从用户进程移动到内核端或从文件系统模块移动到底层块设备。您正在创建大量数据涌入,也许这与的内存管理reiserfs有关。reiserfs

我绝不是一个内核黑客,但我会尝试对ext2文件系统进行同样的事情,看看是否会得到不同的结果。

相关内容