j-g-faustus Asked: 2011-03-04 10:04:04 +0800 CST2011-03-04 10:04:04 +0800 CST 2011-03-04 10:04:04 +0800 CST 如何在 CFS 和 BFS 调度程序之间切换? 772 与CFS 或 BFS 调度程序哪个更好的问题相关: 在哪里可以找到可用调度程序的列表? 以及如何在它们之间切换? 10.10 4 个回答 Voted j-g-faustus 2011-03-20T01:47:30+08:002011-03-20T01:47:30+08:00 经过一番研究,Linux 似乎只有两个调度程序:CFS和BFS。 在 Ubuntu 10.10 中安装 BFS 的最简单方法是PPA 补丁: sudo add-apt-repository ppa:chogydan/ppa sudo apt-get update sudo apt-get install linux-image-generic-ck linux-headers-generic-ck 您还可以使用 Ubuntu 软件中心安装补丁,如“什么是 PPA 以及如何使用它们”中所述。 该补丁安装了一个新的(已修补的)内核,该内核将在引导时显示在 GRUB 菜单中,并带有后缀“-ck”。通过重新启动并在启动菜单中选择适当的内核来在调度程序之间切换。 关于性能 在我的例子中,在桌面 PC 的后台运行Folding@Home(英特尔 i7 2600K 上的八个内核上的八个 F@H 线程),BFS 明显更好:桌面响应更快(差别不大,但绝对明显)而后台 F@H 应用程序的速度要快 20-25%。 在这种情况下,同时处理交互式桌面使用和长时间运行的 CPU 繁重的后台任务,CFS 倾向于一次让一个内核长时间空闲。BFS 在将所有内核 100% 用于后台任务方面似乎要好得多,同时仍为交互式桌面任务提供快速响应。 可能没有单个调度程序可以在每种可能的负载组合下都以最佳方式执行,但在某些情况下 BFS 更好。 Best Answer Cedric 2011-03-07T08:16:06+08:002011-03-07T08:16:06+08:00 您必须下载、修补和编译您自己的内核,因为 BFS 目前不是主线内核的一部分。主线内核只包含一个调度器,并不意味着在同一个代码库中有多个调度器,或者甚至是即时可切换的调度器(这甚至是可以做到的)。这太复杂了,不值得努力。 因此,为了在您的系统上获得 BFS: 获取内核:http ://www.kernel.org 为您的内核版本获取最新的 BFS 补丁:http: //ck.kolivas.org/patches/bfs/ 打补丁,编译,然后引导你的新内核。 但是,在 CFS 上运行 BFS 的好处非常小,尤其是对于较新的内核版本。请记住,CFS 正在不断改进。 zrajm 2013-12-19T19:16:09+08:002013-12-19T19:16:09+08:00 不过,以下内容在 Precise Pangolin (Ubuntu 12.04) YMMV 上为我工作。 BFS 是pf-kernel 今天(2013 年 12 月)在 Ubuntu 系统上安装 BFS 的最佳方法似乎是安装pf-kernel,它基本上是一个标准内核,应用了一堆性能补丁。这些补丁包括: BFS(CPU 调度程序在 CPU 内核少于 16 个的机器上提供低延迟) BFQ(I/O 磁盘调度程序针对重负载下的低延迟进行了优化) TuxOnIce(更快的休眠) 网络说明 我在文章“使用 pf-kernel 获得更好的 Linux 桌面性能等”中找到了一些关于如何pf-kernel为 Ubuntu 安装软件包的说明。– 但是这些说明有些过时,因为它指向相关 Debian 软件包的不存在的源。但是我在论坛上找到了“ pf-kernel for Ubuntu ”的帖子,其中提到可以从论坛用户 big_bum 的 Dropbox 帐户下载 Debian 软件包。pk-kernel 安装pf-kernel 我安装的机器是一台旧的 32 位笔记本电脑,所以我首先将所需的linux-headers和linux-image软件包下载到我机器上名为~/kernel. linux-headers-3.12.2-pf+_3.12.2-pf+-10.00.Custom_i386.deb linux-image-3.12.2-pf+_3.12.2-pf+-10.00.Custom_i386.deb (转到上面提到的Dropbox 帐户以查找这些软件包的 64 位和/或更新版本。) 此后,我按照“使用 pf-kernel 获得更好的 Linux 桌面性能等”的说明执行了以下命令: $ cd ~/kernel $ sudo dpkg -i *.deb 一切似乎都很顺利,所以我重新启动了。 检查它是否有效 快速检查似乎表明它有效,例如命令uname -a报告我正在使用pf-kernel: Linux siobhan 3.12.2-pf+ #6 SMP PREEMPT Mon Dec 2 19:09:52 EET 2013 i686 i686 i386 GNU/Linux 并cat /sys/block/sda/queue/scheduler显示 BFQ 现在是当前磁盘调度程序(用于sda磁盘): noop deadline cfq [bfq] user11924 2011-03-07T07:53:42+08:002011-03-07T07:53:42+08:00 使用 BFS 修补并安装新内核。您必须使用单独的内核,没有办法在同一个内核映像中使用两者(尤其是在运行时切换它们)
经过一番研究,Linux 似乎只有两个调度程序:CFS和BFS。
在 Ubuntu 10.10 中安装 BFS 的最简单方法是PPA 补丁:
您还可以使用 Ubuntu 软件中心安装补丁,如“什么是 PPA 以及如何使用它们”中所述。
该补丁安装了一个新的(已修补的)内核,该内核将在引导时显示在 GRUB 菜单中,并带有后缀“-ck”。通过重新启动并在启动菜单中选择适当的内核来在调度程序之间切换。
关于性能
在我的例子中,在桌面 PC 的后台运行Folding@Home(英特尔 i7 2600K 上的八个内核上的八个 F@H 线程),BFS 明显更好:桌面响应更快(差别不大,但绝对明显)而后台 F@H 应用程序的速度要快 20-25%。
在这种情况下,同时处理交互式桌面使用和长时间运行的 CPU 繁重的后台任务,CFS 倾向于一次让一个内核长时间空闲。BFS 在将所有内核 100% 用于后台任务方面似乎要好得多,同时仍为交互式桌面任务提供快速响应。
可能没有单个调度程序可以在每种可能的负载组合下都以最佳方式执行,但在某些情况下 BFS 更好。
您必须下载、修补和编译您自己的内核,因为 BFS 目前不是主线内核的一部分。主线内核只包含一个调度器,并不意味着在同一个代码库中有多个调度器,或者甚至是即时可切换的调度器(这甚至是可以做到的)。这太复杂了,不值得努力。
因此,为了在您的系统上获得 BFS:
但是,在 CFS 上运行 BFS 的好处非常小,尤其是对于较新的内核版本。请记住,CFS 正在不断改进。
不过,以下内容在 Precise Pangolin (Ubuntu 12.04) YMMV 上为我工作。
BFS 是
pf-kernel
今天(2013 年 12 月)在 Ubuntu 系统上安装 BFS 的最佳方法似乎是安装pf-kernel,它基本上是一个标准内核,应用了一堆性能补丁。这些补丁包括:
网络说明
我在文章“使用 pf-kernel 获得更好的 Linux 桌面性能等”中找到了一些关于如何
pf-kernel
为 Ubuntu 安装软件包的说明。– 但是这些说明有些过时,因为它指向相关 Debian 软件包的不存在的源。但是我在论坛上找到了“ pf-kernel for Ubuntu ”的帖子,其中提到可以从论坛用户 big_bum 的 Dropbox 帐户下载 Debian 软件包。pk-kernel
安装
pf-kernel
我安装的机器是一台旧的 32 位笔记本电脑,所以我首先将所需的
linux-headers
和linux-image
软件包下载到我机器上名为~/kernel
.(转到上面提到的Dropbox 帐户以查找这些软件包的 64 位和/或更新版本。)
此后,我按照“使用 pf-kernel 获得更好的 Linux 桌面性能等”的说明执行了以下命令:
一切似乎都很顺利,所以我重新启动了。
检查它是否有效
快速检查似乎表明它有效,例如命令
uname -a
报告我正在使用pf-kernel
:并
cat /sys/block/sda/queue/scheduler
显示 BFQ 现在是当前磁盘调度程序(用于sda
磁盘):使用 BFS 修补并安装新内核。您必须使用单独的内核,没有办法在同一个内核映像中使用两者(尤其是在运行时切换它们)