为什么Linux CFS调度器没有带来惊艳的碾压效果?( 九 )

所以,考虑到系统中总体的进程情况,将优先级转换为权重,将时间片转换为份额,CFS就是了。最终的坐标系应该是权重占比/时间片坐标系而不是权重(或者优先级)/时间片。应该是这个平滑的样子:

为什么Linux CFS调度器没有带来惊艳的碾压效果?

图5/6

看来,Linux CFS只是为了解决O(1)O(1)中一个“静态优先级/时间片映射”问题的,那么可想而知,它又能带来什么惊艳效果呢?这里还有个“但是”,这个O(1)O(1)调度器的问题其实在计算密集型的守护进程看来,并不是问题,反而是好事,毕竟高优先级进程可以无条件持续运行很久而不切换。这对于吞吐率的提高,cache利用都是有好处的。无非也就侵扰了交互进程呗,又有何妨。

当然,使用调优CFS的时候,难免也要遇到IO睡眠奖惩等剩余的事情去设计一些trick算法,这破费精力。

对了,还要设置你的内核为HZ1000哦,这样更能体现CFS的平滑性,就像它宣称的那样。我难以想象,出了Ubuntu,Suse等花哨的桌面发行版之外,还有哪个Linux需要打开HZ1000,服务器用HZ250不挺好吗?

推荐阅读