为什么12.04删除了-server内核的味道?

Ubuntu正在删除-server flavor,如12.04发行说明中所指定:

  • https://wiki.ubuntu.com/PrecisePangolin/ReleaseNotes/UbuntuDesktop#PrecisePangolin.2BAC8-ReleaseNotes.2BAC8-CommonInfrastructure-1.Kernel

与Beta-1一样,Beta-2内核不再带有单独的amd64 -server和-generic内核风格。 这些已合并为单一内核风格,以帮助减少此LTS版本生命周期中的维护负担。

-generic和-server之间的差异似乎与抢占,定时器中断和i / o调度程序有关,如: https : //help.ubuntu.com/10.10/serverguide/C/preparing-to-install的.html#介绍-内核的diff

我要求技术规格。

  1. 那么,现在发生了什么?
  2. 服务器版本是否会运行桌面内核而不会降低性能?
  3. 这是否有道理?
  4. 这些差异会发生什么?
  5. 它们可以在用户空间中更改吗?
  6. 从12.04开始没有适用范围?
  7. 如果答案是肯定的,这种变化将涉及性能损失?

所有这些都是可以回答的问题。 我要求对包装进行特定更改,而不是其他任何更改。

正如您在发布公告中所注意到的那样,通用和服务器内核风格已合并为12.04版本,以减少LTS生命周期内的维护负担。 两种内核风格实际上仅在2个主要内核配置选项方面有所不同:默认I / O调度程序和抢占模型。

这在Ubuntu内核团队邮件列表中有详细讨论

如该线程所述,默认I / O调度程序从“deadline”更改为“cfq”。 但是,任何想要保留Deadline I / O调度程序的人都可以在启动时通过设置elevator=deadline

抢占模型从CONFIG_PREEMPT_NONE更改为CONFIG_PREEMPT_VOLUNTARY。 在这个时候,我很遗憾没有任何性能基准指向你。 希望这会有所帮助。 谢谢。

您的“为什么”问题在您提供的报价中得到了回答 – 因为这样更容易维护。 内核function参数化得很好,您可以在运行时更改调度程序之类的内容,因此不需要编译不同的默认值。

有关确切原因以及您必须在Ubuntu KernelTeam邮件列表中询问的详细信息的讨论 – 请参阅信息KernelTeam Wiki页面以获取联系信息。

现在发生的事情是服务器和桌面只有一个内核。 如果需要,可以在运行时更改IO调度程序,但CFQ是function最完整且主动维护的调度程序,因此它是一个很好的默认设置。 您使用哪一个在大多数工作负载下几乎没有差别。 服务器内核用于禁用自愿内核抢占,因为理论上它可以提供稍微更好的吞吐量,但我不知道任何实际上显示任何好处的性能测量,所以在实践中,服务器不会受到移动到桌面预置的影响模型。 内核也没用(CONFIG_NO_HZ),这意味着它只在需要的时候根据当前正在运行的应用程序计时器而不是固定的时间间隔来调度计时器中断,我相信现在几个版本都是如此,尽管服务器指南说的是。

TL; DR:维护服务器的另一个内核没有任何好处,所以这种做法已经停止了。