问题描述
与 which is better, the CFS or BFS scheduler 上的问题相关:
在哪里可以找到可用调度程序的列表?
我如何在它们之间切换?
最佳方法
经过一番研究,Linux 似乎只有两个调度程序: CFS 和 BFS 。
在 Ubuntu 10.10 中安装 BFS 最简单的方法是 PPA patch :
sudo add-apt-repository ppa:chogydan/ppa
sudo apt-get update
sudo apt-get install linux-image-generic-ck linux-headers-generic-ck
您还可以使用 Ubuntu 软件中心安装补丁,如 “What are PPAs and how do I use them” 中所述。
该补丁会安装一个新的(已修补的)内核,该内核将在启动时显示在 GRUB 菜单中,后缀为 “-ck”。通过重新启动并在启动菜单中选择适当的内核来在调度程序之间切换。
论性能
就我而言,在桌面 PC 的后台运行 Folding@Home(Intel i7 2600K 上的 8 个内核上的 8 个 F@H 线程),BFS 明显更好:桌面响应更快(差别不大,但绝对引人注目),而后台 F@H 应用程序速度提高 20-25%。
在这种情况下,同时处理交互式桌面使用和 long-running CPU-heavy 后台任务,CFS 往往会一次让一个核心长时间空闲。 BFS 在 100% 使用所有核心执行后台任务方面表现得更好,同时仍然为交互式桌面任务提供快速响应。
可能没有一个调度程序能够在每种可能的负载组合下以最佳方式执行,但在某些情况下 BFS 更好。
次佳方法
您必须下载、修补和编译您自己的内核,因为 BFS 当前不是主线内核的一部分。主线内核仅包含一个调度程序,并不意味着在同一代码库中拥有多个调度程序,甚至不包含 on-the-fly 可切换调度程序(这甚至是可能完成的事情)。这太复杂了,而且不值得付出努力。
因此,为了在您的系统上获得 BFS:
-
获取适合您的内核版本的最新 BFS 补丁:http://ck.kolivas.org/patches/bfs/
-
修补、编译,然后启动新内核。
不过,与 CFS 相比,运行 BFS 的好处非常小,尤其是对于较新的内核版本。请记住,CFS 正在不断改进。
第三种方法
不过,下面的内容对我在 Precise Pangolin (Ubuntu 12.04) YMMV 上有用。
BFS 是 pf-kernel
的一部分
今天(2013 年 12 月)在 Ubuntu 系统上安装 BFS 的最佳方法似乎是安装 pf-kernel ,它基本上是一个应用了一堆性能补丁的标准内核。这些补丁包括:
网络上的说明
我在文章 \u201c Get Better Linux Desktop Performance and more with pf-kernel 中找到了一些有关如何为 Ubuntu 安装 pf-kernel
软件包的说明。\u201d \u2013 然而,这些说明有些过时,因为它指向相关 Debian 软件包的不存在的源。但我发现线程 \u201c pf-kernel for Ubuntu \u201d (在 pk-kernel
论坛上)提到可以从 forum user big_bum\u2019s Dropbox account 下载 Debian 软件包。
安装pf-kernel
我安装的机器是一台旧的 32 位笔记本电脑,因此我首先将所需的 linux-headers
和 linux-image
包下载到我的机器上名为 ~/kernel
的目录中。
(转至上述 Dropbox account 以查找这些软件包的 64 位和/或更新版本。)
此后,我按照 Get Better Linux Desktop Performance and more with pf-kernel 上的说明执行了以下命令:
$ cd ~/kernel
$ sudo dpkg -i *.deb
一切似乎都很顺利,所以我重新启动了。
检查它是否有效
快速检查似乎表明它有效,例如命令 uname -a
报告我正在使用 pf-kernel
:
\\n
Linux siobhan 3.12.2-pf+ #6 SMP PREEMPT Mon Dec 2 19:09:52 EET 2013 i686 i686 i386 GNU/Linux
\\n
cat /sys/block/sda/queue/scheduler
显示 BFQ 现在是当前磁盘调度程序(对于 sda
磁盘):
noop deadline cfq [bfq]