至今不敢写一篇关于cfs的文章

简介:

linux内核在2.6.23种引入了一种完全公平的进程调度方式,就是cfs调度算法,该算法比起原来的O(1)算法来说确实简便了不少,但是却高效了很多,合理了很多。

我研究这个cfs算法已经快一年了,但是至今也不敢写一篇关于它的文章,因为它太神圣了,太美妙了,像我这样的文笔,我这样糟糕的表达方式能做的仅仅是亵 渎cfs算法。cfs没有用哪怕一种额外的补充算法,也没有列举很多额外的约定,只是提供了一条,仅仅一条简单的规则,引入了一个概念,虚拟时钟的概念, 就可以把cfs表述的如此美妙,简直令人叫绝,cfs中的无极变速思想更是让人拍案,它彻底抛弃了时间片的概念,正是将调度决策引入一种更加灵活的方式, 实际上时间片是不合理的,无论何时保证公平才是合理的,有人会问,按照权值分配不同的时间片不也是很合理吗?实际上每时每刻都让每个进程感到公平你不觉得 更加合理吗?时间片分配中,在当前时间片没有完成之前,除了抢占是没有办法执行别的进程的,即使突然来了一位猛士,然而在cfs中,系统并不偏向在任何时 期的任何进程,即使该进程的时间片还没有用完。cfs保证的是每时每刻的公平,cfs依据的是进程的执行时间,利用的是补偿原理,cfs让进程先超前运 行,然后补偿别的进程,这样很合理。另外cfs不用任何启发算法,只是一个虚拟时钟就够了,因为当进程睡眠的时候,其虚拟时钟就不走了,这样当然落后于别 的进程的虚拟时钟,理应得到补偿。



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1274302

相关文章
|
3月前
|
并行计算 Linux Go
export GOMP_CPU_AFFINITY=0-(((npro
export GOMP_CPU_AFFINITY=0-(((nproc --all) - 1 )) 是一条 Linux 命令,用于设置 GOMP(Go 语言的 OpenMP 支持库)使用的 CPU 亲和性。
128 1
|
5月前
|
缓存 负载均衡 算法
xv6(16) 进程二:调度算法
进程二:调度算法
37 0
xv6(16)  进程二:调度算法
|
传感器 算法 Linux
Perf Subsystem —— 基于PMI实现的NMI Watchdog
## 背景 任务能否被及时响应,对内核来说,至关重用。Linux kernel实现了softlockup和hardlockup,用于检测系统是否出现了长时间无响应。 > A ‘softlockup’ is defined as a bug that causes the kernel to loop in kernel mode for more than 20 seconds, with
1790 1
|
存储
CFS 是什么
CFS 是什么
1005 0
|
存储 缓存 Linux
blkio cgroup
blkio 是 cgroup v1 中的一个子系统,使用 cgroup v1 blkio 子系统主要是为了减少进程之间共同读写同一块磁盘时相互干扰的问题。
481 1
cgroup
创建两个python进程,然后分别绑定在第0,1号CPU上.
cgroup