我们将在大约 1000 台服务器上推出 Tuned(和 numad),其中大多数是 NetApp 或 3Par 存储上的 VMware 服务器。
根据 RedHat 文档,我们应该选择virtual-guest
配置文件。它在做什么可以在这里看到:tuned.conf
我们正在将 IO 调度程序更改为 NOOP,因为 VMware 和 NetApp/3Par 都应该为我们进行足够的调度。
但是,经过一番调查后,我不确定它们为什么会增加vm.dirty_ratio
并且kernel.sched_min_granularity_ns
.
据我了解,增加到vm.dirty_ratio
40% 将意味着对于具有 20GB 内存的服务器,除非vm.dirty_writeback_centisecs
首先命中,否则 8GB 在任何给定时间都可能是脏的。并且在刷新这些 8GB 时,应用程序的所有 IO 都将被阻塞,直到脏页被释放。
增加dirty_ratio 可能意味着更高的峰值写入性能,因为我们现在拥有更大的缓存,但是当缓存填满时,IO 将被阻塞相当长的时间(几秒钟)。
另一个是他们为什么要增加sched_min_granularity_ns
. 如果我理解正确,增加这个值将减少每个 epoch( sched_latency_ns
) 的时间片数,这意味着正在运行的任务将有更多时间来完成它们的工作。我可以理解这对于线程很少的应用程序来说是一件非常好的事情,但例如。apache 或其他具有大量线程的进程会不会适得其反?