我们如何获得这个神奇的性能提升的200行补丁?

我今天在Phoronix上读到了一篇文章,说有一个200行的补丁可以显著提高Linux内核的桌面响应速度。那么Ubuntu用户该如何获取并得到官方支持呢?
6个回答

这个特定的补丁的讨论发生在 Ubuntu kernel-team 邮件列表上:

https://lists.ubuntu.com/archives/kernel-team/2010-November/013498.html

但请让我试着更加通用地详细说明任何补丁进入Ubuntu内核的最佳方式...

首先,Ubuntu内核团队优先希望补丁在被合并到Ubuntu内核之前,能够被提交并接受上游。对于Ubuntu内核团队来说,维护不在树外的补丁是一个巨大的负担。此外,如果该补丁将使整个内核社区受益,应首先进入上游。

一旦补丁被上游接受,它最终将自动进入Ubuntu内核。如果有需要,也可以进行挑选或Pull Request,请参阅KernelPatches页面了解更多信息。

如果该补丁需要作为SRU(稳定版本更新)应用到之前的Ubuntu发布中,最好将其补丁接受到相应的上游稳定2.6.x.y分支中。作为我们正常内核SRU流程的一部分,我们持续重建到最新的上游稳定内核。因此,我们最终会自动获得该补丁。


4这个补丁很可能会出现在v2.6.38内核中,这意味着它很可能会出现在Natty版本中。一旦该补丁出现在Linus的树中,我们就能更好地判断。 - Andy
1@Andy: 更新 - 好消息:Ubuntu 11.04 Natty Narwhal昨天发布,其中包含2.6.38版本,该版本中包含了这个补丁。 - Piskvor left the building
很遗憾,“Ubuntu内核团队邮件列表”链接似乎已经无效或错误。 - Greenonline

我刚刚阅读了lkml的讨论串,希望我能提供一些信息,尽管与将补丁合并到Ubuntu无关。正如链接的Ubuntu列表上的一篇帖子所说,它很可能会在2.6.38版本中出现。
该补丁会根据TTY自动分组进程。在lkml上有很多关于这个问题的讨论和争论,有人认为这意味着它对于典型的桌面使用来说并不相关,对交互式应用程序没有任何影响。测试案例都是基于“从终端启动一个CPU密集型任务,然后观察另一个任务的响应性”。例如,在编译内核时尝试观看视频。
这并不是说它不好,但如果你从未运行过与TTY连接的CPU密集型任务,那些声称“桌面响应性提高了一个数量级”的标题可能会误导你。当然,我也可能错了!
还有一些提到通过在bash脚本中添加内容并允许所有用户创建cgroups来实现非常相似结果的方法。这只适用于当前的Ubuntu内核已启用cgroups的情况。相关的帖子如下: 显然这并不是回答问题的方式,但它可以用来确定补丁是否像期望的那样神奇。

4我认为更多的人需要意识到这一点。 - Roddie

Ubuntu用户如何以一种“受支持”的方式获取这个呢?
重点在于,你唯一能够以受支持的方式获得它,就是等待Ubuntu将其纳入Ubuntu内核。由于这只是刚刚进入内核邮件列表,所以所有的测试都相当主观,并且我想在它准备好进行大规模部署之前还需要一些时间。
在下一个发布版本和很长一段时间之间,这只是我的个人猜测,没有经过专业知识的支持。
但是如果你是个大人了(无论男孩还是女孩),并且能够处理好出现问题时的内核崩溃(也就是说,你知道如何使用 grub),那么你可以修补并编译自己的内核。
  1. 下载一个补丁。有不同的版本,但最好的版本是由另一个用户在下面发布的:http://pavlinux.ru/krnl/sched_autogroup-2.6.36.patch.bz2

  2. 下载与您的补丁目标版本相对应的内核源代码。在这种情况下是2.6.36版本。您可以从kernel.org获取原始的(即未经Ubuntu内核团队修改的)内核源代码并解压。

  3. 将补丁保存在某个地方,并通过进入内核源代码目录并运行以下命令来应用补丁:patch -p1 < /path/to/patch(您需要安装patch软件包...如果默认情况下没有安装,则可能作为build-essential的一部分提供)

  4. {{link3:然后继续进行“老式”的构建过程...我真的不会费心去尝试新的方法,因为它们针对的是Ubuntu/Debian认可的内核源代码...而且老方法似乎更容易(对我来说)。

构建内核并不难,但如果你偏离了被接受的路径,就有可能搞砸。而且,如果出了问题,你将无法获得官方支持。
另外,越来越多的内核出现了内置补丁的情况(或者至少在源代码树中等待下一个发布)。
  • 我相信Zen Kernel在他们的代码库中有这个补丁,但我不确定它是否已经包含在任何构建中。
  • Liquorix Kernel现在也已经集成了这个补丁。

注意:这些内核(可能还有其他内核)与Ubuntu的内核处理方式有所不同。你可能会发现(就像我转到Liquorix时一样),CPU频率调节停止工作或挂起功能失效。通常会有修复和解决方法,但很有可能你无法从AskUbuntu或Ubuntu社区获得支持,因为我们无法检查每一个存在的内核。


肯定有人在某个公共的git分支上已经应用了这个补丁。这样重要的消息不可能没有,但是我无法通过谷歌找到。 - Karl Bielefeldt
@Karl Zen内核在他们的git树中有这个。 - Oli
Liquorix在众多补丁中应用了这个功能。我现在正在使用它,感觉相当不错。对我来说(也可能是大多数其他用户),一个主要问题是CPU_FREQ似乎有点出毛病。它一直停留在PERFORMANCE模式上。 - Oli


请将链接中的详细信息包含在内,以防链接失效,您的回答将无法帮助用户。 - nanofarad

截至2011年01月18日,Linux 2.6.38-rc1已包含该补丁。
请参阅相关Phoronix新闻Linus帖子
截至2011年01月29日,Natty Narwhal每日构建版本搭载了Linux 2.6.38。
因此,目前有两种解决方案:

我刚刚看到这个讨论,觉得非常有趣。我写了一篇关于如何在Ubuntu 10.10上启用cgroup补丁的小博客文章
我还没有真正测试过它是否有效,所以希望能得到反馈!