popey Asked: 2010-11-17 15:13:25 +0800 CST2010-11-17 15:13:25 +0800 CST 2010-11-17 15:13:25 +0800 CST 我们如何获得这个神奇的性能提升 200 行补丁? 772 我今天在 Phoronix上读到,Linux 内核有一个200 行的补丁,它极大地提高了桌面响应能力。 Ubuntu 用户如何以受支持的方式获得此功能? performance kernel patch 6 个回答 Voted Best Answer Leann Ogasawara 2010-11-17T15:37:43+08:002010-11-17T15:37:43+08:00 关于这个特定补丁的讨论发生在 Ubuntu 内核团队邮件列表中: https://lists.ubuntu.com/archives/kernel-team/2010-November/013498.html 但是,让我尝试更笼统地阐述任何补丁进入 Ubuntu 内核的最佳方式...... 首先,Ubuntu Kernel Team 的首选策略是在将补丁提交到上游并在被拉入 Ubuntu 内核之前被接受。必须维护树外补丁对 Ubuntu 内核团队来说是一个很大的维护负担。此外,如果补丁将使整个内核社区受益,它应该首先进入上游。 一旦补丁被上游接受,它最终会自动进入 Ubuntu 内核。如果需要,也可以提出挑选或拉取请求,请参阅页面KernelPatches以获取更多信息。 如果补丁需要作为 SRU(稳定版本更新)应用到以前的 Ubuntu 版本,最好将补丁接受到相应的上游稳定 2.6.xy 树中。作为我们正常内核 SRU 进程的一部分,我们不断地变基到最新的上游稳定内核。因此,我们最终将再次自动获得补丁。 Roger Light 2010-11-18T03:23:21+08:002010-11-18T03:23:21+08:00 我刚刚阅读了 lkml 线程,希望我能提供一些信息——尽管不是关于将补丁安装到 Ubuntu 中。正如链接的 Ubuntu 列表上的帖子所说,无论如何它可能会在 2.6.38 中。 该补丁会根据 TTY 自动对进程进行分组。关于 lkml 有很多讨论/争论说这意味着它与典型的桌面使用无关——它对交互式应用程序没有任何影响。测试用例都基于“从终端启动 CPU 密集型任务,然后查看另一个任务的响应能力”。例如,编译内核并尝试观看视频。 这并不是说它不好,但是如果您从不运行连接到 TTY 的 CPU 密集型任务,那么一般的“桌面响应能力提高了一个数量级”类型的标题可能会产生误导。我当然可能是错的! 有人提到了通过添加到您的 bash 脚本并允许所有用户创建 cgroup 来实现非常相似的结果的方法。这只有在当前的 Ubuntu 内核启用了 cgroups 时才有效。相关帖子是: http://marc.info/?l=linux-kernel&m=128993140308849&w=2 http://marc.info/?l=linux-kernel&m=128993874020246&w=2 显然这并没有回答问题,但它可以用来确定补丁是否像希望的那样神奇。 Oli 2010-11-17T15:23:31+08:002010-11-17T15:23:31+08:00 Ubuntu 用户如何以受支持的方式获得此功能? 强调我的。以受支持的方式获得它的唯一方法是等待 Ubuntu 将其拉入 Ubuntu 内核。由于这实际上只是进入内核邮件列表,所以它是新鲜的,所有测试都是相当轶事,我想它还需要一段时间才能准备好大规模部署。 在下一个版本和很长一段时间之间的某个地方将是我未受过教育的猜测。 但是,如果你是一个大男孩(或女孩),并且如果出现问题,你可以处理损坏的内核(即你知道如何使用 grub),你可以修补和编译你自己的内核。 下载补丁。有不同的版本,但另一个用户在下面发布了最好的版本:http: //pavlinux.ru/krnl/sched_autogroup-2.6.36.patch.bz2 下载补丁目标版本的内核源代码。在这种情况下 2.6.36。您可以从kernel.org获取 vanilla(即原始的、未经 Ubuntu 内核团队修改的)内核源并将其解压缩。 将补丁保存在某处并通过cding 到内核源目录并运行来应用它:(patch -p1 < /path/to/patch你需要这个包......如果默认情况下没有安装,patch我认为这是其中的一部分)build-essential 然后继续其余的“老式”构建过程......我真的不会为新方法烦恼,因为它们针对的是 Ubuntu/Debian 认可的内核源......加上旧方法似乎更容易(大部头书)。 构建内核并不难,但如果您偏离可接受的路径太远,您可能会搞砸。如果出现问题,您将无法获得官方支持。 或者,越来越多的内核随着内置补丁的出现(或至少在源代码树中,等待下一个版本)。 我相信Zen Kernel在他们的树中有这个补丁,但我不确定它是否在任何版本中。 Liquorix Kernel现在也加入了这个。 注意:这两个内核(可能还有其他内核)都在某种程度上偏离了 Ubuntu 的内核方式。您可能会发现(就像我搬到 Liquorix 时所做的那样)CPU 频率缩放停止工作或挂起被破坏。通常有修复和解决方法,但您可能无法从 AskUbuntu 或其他 Ubuntu 社区获得支持,因为我们无法检查每个内核。 Alin Andrei 2010-11-19T07:43:46+08:002010-11-19T07:43:46+08:00 您可以使用 RedHat 开发人员在邮件列表上发布的简单“hack”,无需修补内核即可获得相同的东西。在这里阅读:替代“200 行内核补丁”,您可以立即使用它 Maxime R. 2011-01-20T06:11:20+08:002011-01-20T06:11:20+08:00 截至 2011-01-18,Linux 2.6.38-rc1 包含上述补丁。 请参阅相关的Phoronix 新闻和Linus 帖子。 截至 2011 年 1 月 29 日,Natty Narwhal 每日构建随 Linux 2.6.38 一起提供。 所以,目前有两种解决方案: 获取最新的 Ubuntu 11.04 映像。 或者等待 2011 年 4 月最新的官方 Ubuntu 11.04 版本。 stefanlsd 2010-11-18T11:52:00+08:002010-11-18T11:52:00+08:00 我现在才开始讨论这个讨论,它非常有趣。我写了一篇关于如何在 Ubuntu 10.10 上启用 cgroup 补丁的小博文。 我还没有真正测试它是否有效,所以反馈会很棒!
关于这个特定补丁的讨论发生在 Ubuntu 内核团队邮件列表中:
https://lists.ubuntu.com/archives/kernel-team/2010-November/013498.html
但是,让我尝试更笼统地阐述任何补丁进入 Ubuntu 内核的最佳方式......
首先,Ubuntu Kernel Team 的首选策略是在将补丁提交到上游并在被拉入 Ubuntu 内核之前被接受。必须维护树外补丁对 Ubuntu 内核团队来说是一个很大的维护负担。此外,如果补丁将使整个内核社区受益,它应该首先进入上游。
一旦补丁被上游接受,它最终会自动进入 Ubuntu 内核。如果需要,也可以提出挑选或拉取请求,请参阅页面KernelPatches以获取更多信息。
如果补丁需要作为 SRU(稳定版本更新)应用到以前的 Ubuntu 版本,最好将补丁接受到相应的上游稳定 2.6.xy 树中。作为我们正常内核 SRU 进程的一部分,我们不断地变基到最新的上游稳定内核。因此,我们最终将再次自动获得补丁。
我刚刚阅读了 lkml 线程,希望我能提供一些信息——尽管不是关于将补丁安装到 Ubuntu 中。正如链接的 Ubuntu 列表上的帖子所说,无论如何它可能会在 2.6.38 中。
该补丁会根据 TTY 自动对进程进行分组。关于 lkml 有很多讨论/争论说这意味着它与典型的桌面使用无关——它对交互式应用程序没有任何影响。测试用例都基于“从终端启动 CPU 密集型任务,然后查看另一个任务的响应能力”。例如,编译内核并尝试观看视频。
这并不是说它不好,但是如果您从不运行连接到 TTY 的 CPU 密集型任务,那么一般的“桌面响应能力提高了一个数量级”类型的标题可能会产生误导。我当然可能是错的!
有人提到了通过添加到您的 bash 脚本并允许所有用户创建 cgroup 来实现非常相似的结果的方法。这只有在当前的 Ubuntu 内核启用了 cgroups 时才有效。相关帖子是:
显然这并没有回答问题,但它可以用来确定补丁是否像希望的那样神奇。
强调我的。以受支持的方式获得它的唯一方法是等待 Ubuntu 将其拉入 Ubuntu 内核。由于这实际上只是进入内核邮件列表,所以它是新鲜的,所有测试都是相当轶事,我想它还需要一段时间才能准备好大规模部署。
在下一个版本和很长一段时间之间的某个地方将是我未受过教育的猜测。
但是,如果你是一个大男孩(或女孩),并且如果出现问题,你可以处理损坏的内核(即你知道如何使用 grub),你可以修补和编译你自己的内核。
下载补丁。有不同的版本,但另一个用户在下面发布了最好的版本:http: //pavlinux.ru/krnl/sched_autogroup-2.6.36.patch.bz2
下载补丁目标版本的内核源代码。在这种情况下 2.6.36。您可以从kernel.org获取 vanilla(即原始的、未经 Ubuntu 内核团队修改的)内核源并将其解压缩。
将补丁保存在某处并通过
cd
ing 到内核源目录并运行来应用它:(patch -p1 < /path/to/patch
你需要这个包......如果默认情况下没有安装,patch
我认为这是其中的一部分)build-essential
然后继续其余的“老式”构建过程......我真的不会为新方法烦恼,因为它们针对的是 Ubuntu/Debian 认可的内核源......加上旧方法似乎更容易(大部头书)。
构建内核并不难,但如果您偏离可接受的路径太远,您可能会搞砸。如果出现问题,您将无法获得官方支持。
或者,越来越多的内核随着内置补丁的出现(或至少在源代码树中,等待下一个版本)。
注意:这两个内核(可能还有其他内核)都在某种程度上偏离了 Ubuntu 的内核方式。您可能会发现(就像我搬到 Liquorix 时所做的那样)CPU 频率缩放停止工作或挂起被破坏。通常有修复和解决方法,但您可能无法从 AskUbuntu 或其他 Ubuntu 社区获得支持,因为我们无法检查每个内核。
您可以使用 RedHat 开发人员在邮件列表上发布的简单“hack”,无需修补内核即可获得相同的东西。在这里阅读:替代“200 行内核补丁”,您可以立即使用它
截至 2011-01-18,Linux 2.6.38-rc1 包含上述补丁。
请参阅相关的Phoronix 新闻和Linus 帖子。
截至 2011 年 1 月 29 日,Natty Narwhal 每日构建随 Linux 2.6.38 一起提供。
所以,目前有两种解决方案:
我现在才开始讨论这个讨论,它非常有趣。我写了一篇关于如何在 Ubuntu 10.10 上启用 cgroup 补丁的小博文。
我还没有真正测试它是否有效,所以反馈会很棒!