根据RedHats文档,我们应该选择virtual-guestprofile.
它在做什么可以在这里看到:tuned.conf
我们正在将IO调度程序更改为NOOP,因为VMware和NetApp / 3Par都应该为我们做足够的调度.
但是,在调查了一下后,我不确定他们为什么要增加vm.dirty_ratio和kernel.sched_min_granularity_ns.
据我所知,越来越多的vm.dirty_ratio增加到40%将意味着对于具有20GB内存的服务器,8GB在任何给定时间都可能是脏的,除非vm.dirty_writeback_centisecsis首先命中.在刷新这些8GB的应用程序的所有IO时,将被阻止,直到脏页被释放.
增加dirty_ratio可能意味着更高的写入性能,因为我们现在拥有更大的缓存,但是当缓存填充IO时,将被阻止相当长的时间(几秒).
另一个是他们增加sched_min_granularity_ns的原因.
如果我理解正确增加此值将减少每个时期的时间片数(sched_latency_ns),这意味着正在运行的任务将有更多时间来完成他们的工作.我可以理解这对于线程非常少的应用程序来说是一件非常好的事情,但是对于例如. apache或其他具有大量线程的进程会不会适得其反?
解决方法
一个更长的答案:
Increasing the dirty_ratio would probably mean higher write performance …IO will be blocked for a considerably longer time
否.增加脏比率意味着您的系统不太可能进入需要开始阻止写入的状态.缺点是使用的内存越多,中断时数据丢失的风险就越大.
meaning that running tasks will get more time to finish their work
进程通常会在其时间片到期之前产生. VM的问题在于您的计算机可能正在与其他VM竞争cpu和L1 / L2缓存 – 高级别的任务切换(由于预占)会对吞吐量产生很大影响.通常部署到VM中的应用程序类型是cpu绑定的(Web服务器,应用程序服务器).
是的,吞吐量的增加(适用于所有类型的应用程序)将以延迟增加为代价 – 但是当大多数事务花费毫秒时,后者的数量级为微秒.如果您需要实时功能/非常低的延迟,那么您不应该使用VM.