我们将在〜1000台服务器上推出调优(和numad),其中大部分是NetApp或3Par存储上的VMware服务器。
根据RedHats文档,我们应该selectvirtual-guestconfiguration文件。 它在做什么可以在这里看到: 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可能意味着更高的写入性能达到峰值,因为我们现在有更大的caching,但是当caching填充IO时将会被阻塞相当长的时间(几秒)。
另一个是为什么他们增加了sched_min_granularity_ns 。 如果我理解正确,增加这个值会减less每个时期的时间片数量( sched_latency_ns ),这意味着运行的任务将会有更多的时间来完成他们的工作。 我可以理解这对于线程很less的应用程序来说是一件好事,但对于例如。 Apache或其他进程有很multithreading会不会适得其反?
简单的答案是,任何调整都是猜测,只有用经验数据备份时才有价值:尝试一下。 测量它。 如果你不喜欢,调整它。
更长的答案:
增加dirty_ratio可能意味着更高的写入性能… IO会被阻塞相当长的时间
否。增加脏比率意味着您的系统不太可能进入需要开始阻止写入的状态。 不足之处在于使用了更多的内存,并且在停机时数据丢失的风险更大。
这意味着正在运行的任务将会有更多的时间完成他们的工作
过程通常会在时间片到期之前产生。 虚拟机的问题在于您的机器可能与其他虚拟机竞争CPU和L1 / L2caching – 高级别的任务切换(由于抢先)会对吞吐量产生很大的影响。 虚拟机中常用的应用程序types为CPU绑定(Web服务器,应用程序服务器)。
是的,吞吐量的增加(适用于所有types的应用程序)将以延迟增加为代价 – 但是当大多数事务花费毫秒时,后者的数量级是微秒。 如果您需要实时function/非常低的延迟,那么您不应该使用虚拟机。
以下是tuned-admconfiguration的时间表
我认为这有助于以表格的forms看到它们。 最重要的是要注意的是, 默认的RHEL6设置吸! 另一件事是企业存储和虚拟客户configuration文件是相同的,除了在虚拟客户端减lessswappiness (有道理,对吧?)。
关于存储I / O电梯的build议,存储层上有几层抽象。 如果您使用RDM或将存储直接呈现给虚拟机,则使用noop调度程序将非常有意义。 但是由于他们要在NFS或VMFS上运行,我仍然喜欢截止date调度程序提供的其他调整选项 。
调优的configuration文件可以在正在运行的系统上实时更改,所以如果您有任何疑问,请使用您的应用程序以及特定的环境和基准进行testing。
观看来自Summit的Shak和Larry的性能调整video,他们会深入讨论调优的configuration文件。
最大的意图之一是configuration文件只是一个推荐的出发点,而不是不可改变的数字,这对每个环境来说都是完美的。
从一个configuration文件开始,并与设置一起玩。 生成一个很好的生产testing工作负载,并衡量对您的业务至关重要的指标。
每次改变一个事物,并在每次迭代中logging每个结果。 完成后,查看结果并select能够获得最佳结果的设置。 这是您理想的调谐configuration文件。