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

4.3BSD的优先级公平调度是CPU滴答驱动的。

现在看Linux的CFS,CFS采用随时抢占制。每一个进程j均携带一个虚拟时钟VCj,每一个时钟滴答,当前进程k的VCk会重新计算,同时调度器选择VC最小的进程运行,计算方法非常简单:

可见, Linux的CFS简直就是4.3BSD进程调度的自驱无级变速版本!

如果你想了解CFS的精髓,上面的就是了。换成语言描述,CFS的精髓就是 “n个进程的系统,任意长的时间周期TT,每一个进程运行T/n的时间!”

当然,在现实和实现中,会有80%的代码处理20%的剩余问题,比如如何奖励睡眠太久的进程等等,但是这些都不是精髓。

综上,我们总结了:

现实世界很难碾压同级别的人或事。

大量的Linux服务器不需要照顾交互进程,CFS优势无法凸显。

大量的Android系统没有和O(1)同台竞技的机会。

大量的Android系统交互进程很难感知进程调度这件事。

推荐阅读