当前位置: 首页>>技术教程>>正文


如何在 CFS 和 BFS 调度程序之间切换?

, ,

问题描述

which is better, the CFS or BFS scheduler 上的问题相关:

在哪里可以找到可用调度程序的列表?

我如何在它们之间切换?

最佳方法

经过一番研究,Linux 似乎只有两个调度程序: CFSBFS

在 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:

不过,与 CFS 相比,运行 BFS 的好处非常小,尤其是对于较新的内核版本。请记住,CFS 正在不断改进。

第三种方法

不过,下面的内容对我在 Precise Pangolin (Ubuntu 12.04) YMMV 上有用。

BFS 是 pf-kernel 的一部分

今天(2013 年 12 月)在 Ubuntu 系统上安装 BFS 的最佳方法似乎是安装 pf-kernel ,它基本上是一个应用了一堆性能补丁的标准内核。这些补丁包括:

  • BFS(CPU 调度程序在 CPU 核心数少于 16 的机器上提供低延迟)

  • BFQ(I/O 磁盘调度程序针对重负载下的低延迟进行了优化)

  • TuxOnIce(更快的休眠)

网络上的说明

我在文章 \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-headerslinux-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] 

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14247.html,未经允许,请勿转载。