我们将在约1000台服务器上推出已调优(和numad)的服务器,其中大多数是NetApp或3Par存储上的VMware服务器。
根据RedHats文档,我们应该选择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或其他线程很多的进程会不会适得其反?