“du”计划可以变得不那么激进吗?

Dan*_*ple 21 io disk-usage limit

我们有一项常规工作,du它对许多子目录进行摘要,挑选出最严重的违规者,并使用输出来查找是否存在快速上升的事物以发现潜在问题。我们使用diff对快照来比较它们。

有一个顶级目录,有许多(几百个)子目录,每个子目录可能包含数十个(或更多)的文件。

du -s在这种情况下," " 可能非常具有 IO 攻击性,导致我们的服务器保释其缓存,然后出现大量 IO 峰值,这是非常不受欢迎的副作用。

什么策略可以用来获得相同的数据,而没有不必要的副作用?

Chr*_*own 28

看看ionice。来自man ionice

该程序设置或获取程序的 io 调度类和优先级。如果没有参数或仅给出 -p,则 ionice 将查询该进程的当前 io 调度类和优先级。

du使用可用的最低优先级“空闲”I/O 类运行,您可以执行以下操作:

ionice -c 3 du -s
Run Code Online (Sandbox Code Playgroud)

这应该停止du干扰其他进程的 I/O。您可能还需要考虑重新启动程序以降低其 CPU 优先级,如下所示:

renice -n 19 "$duPid"
Run Code Online (Sandbox Code Playgroud)

您也可以在初始化时执行这两项操作:

nice -n 19 ionice -c 3 du
Run Code Online (Sandbox Code Playgroud)

  • 要对现有程序进行 renice,您需要调用 `renice` 而不是 `nice`。要同时使用 ionice 和 nice 启动 `du`,您可以链接两个程序:`nice -n19 ionice -c3 du`。 (5认同)