我想删除一个包含 4000 多个目录中超过 600 万个文件的巨大目录,总共大约 26GB 的数据。我知道这将需要一段时间,我曾经ionice
将 I/O 优先级设置为空闲,因此我可以在删除文件的同时继续执行其他任务。
time ionice -c3 rm -vrf /tmp/huge-folder
Run Code Online (Sandbox Code Playgroud)
然而,我的整个桌面环境现在仍然非常缓慢,谷歌浏览器需要很长时间才能打开新标签和加载页面,有时甚至需要一段时间才能打开一个新的 xterm 窗口。总结:我似乎没有得到降低rm
进程I/O 优先级的任何好处。
检查情况iotop
表明,一些 I/O 时间花费在rm
具有idle
我想要的I/O 优先级的进程中:
但是其他时候 I/O 时间花在了 ext4 的日志记录过程和软件突袭过程中:
请注意他们如何使用自己的默认 I/O 优先级,这可能是问题的原因。 jbd2
甚至以优先级运行,be/3
这实际上比be/4
我所有其他桌面进程的默认优先级更高。
许多其他问题询问并回答什么jbd2
是以及为什么它会消耗 I/O 时间,这不是我想知道的。我的问题是:有没有办法在这种特定场景下真正获得空闲 I/O 调度优先级?显然,应用ionice
到jbd2
是一个疯狂的想法。
更多设置信息:这是在带有 3 个旋转磁盘的软件 raid10 之上的 ext4 文件系统上。ext4 使用默认选项进行格式化和挂载(Debian 默认设置,以防万一)。