内核配置中什么值得改变?

内核配置中什么值得改变?

我想知道你通常会在内核配置。我面前有 make menuconfig,现在我需要为我的全新服务器准备最好的内核。我使用来自 linux-image-2.6.32-5-amd64 Debian Squeeze 包的源代码,因为不幸的是 kernel.org 仍然处于关闭状态。

现在,我看到里面有很多模块。其中大多数我都不需要,但它只是按需加载到内核的附加代码。没什么大不了的。

另一方面,我有很多可以提高性能的选项,这些选项在拥有数百个服务和用户的服务器上非常有用。例如抢占定时器频率/动态刻度或者SMT 超线程。有时最终禁用这些功能会更好。

另外,还有很多选项,我不知道它们如何影响系统行为,或者根本我就不明白。(比如,加密 API 到底是什么?我从来不知道我是否需要它。)

如果您能写几句明智的话我将不胜感激。

答案1

几句明智的话?好的:如果你不知道,请勿触摸


再说几句怎么样?

任何现代 Linux 或 BSD 变体附带的默认/通用内核都经过了相当好的调优,可以满足绝大多数工作负载的需求。您可能需要触及的大部分内容都可以通过sysctl旋钮(或 Linux/proc/sys可调参数)进行访问,并且您会从各个供应商那里找到有关更改这些内容的建议,这些建议通常针对特定情况。

如果不清楚自己在做什么以及为什么要这样做,那么就乱改内核配置或可调参数,这只会直接导致噩梦:无法启动的系统、糟糕的性能、“这个解决方案对其他人都有效,但对我无效”的情况等等。

除非你有具体的您需要更改内核配置或可调参数的原因,并已研究彻底了解您正在调整的内容以及为什么这是正确的做法,您现在最好使用默认设置。

答案2

正如 voretaq7 提到的,对于大多数人来说,原始内核已经足够了。

如果您确实认为必须修改发行版默认值中的内核,那么您几乎肯定需要首先设计一个可以模拟您的典型使用情况的测试系统。

然后你应该开始逐个测试设置。你几乎肯定应该通过复制现有内核配置/boot/config-2.6.32-5-amd64并从那里进行调整来开始你的内核实验。如果你使用的是 Debian/Ubuntu 系统,那么你应该使用制作 kpkg构建您的内核。这将为您提供一个 Debian 软件包,其中包含轻松安装所需的内核、模块和脚本。

如果你不明白某些东西的作用,那么你很幸运,你有源代码和文档,它是 Linux 源代码的一部分。你所要做的就是开始阅读它。

答案3

我想说你问错了问题,啊哈。

我建议您从以下两个问题开始:

  1. 哪些类型/方面的表现对您来说很重要?
  2. 您将如何尽可能准确地测量和分析这些趋势?

你无法真正“调整”没有“量规”的东西,主要是因为没有量规,你无法准确判断你是在朝着正确的方向调整还是朝着错误的方向调整,直到你得到显著的结果。而且很多时候,当你进入“显著”的领域时,事情已经发生了显著的变化错误的

确定并优先考虑要优化的性能类型/方面也很重要。通常,我们会拆东墙补西墙 - 也就是说,我们专门针对一种性能进行调整,但很清楚这种优化可能会损害其他类型的性能。举一个简单的例子,有时我们必须优化服务器成本从而放弃一些可靠性或者,我们可以选择一个针对读取进行优化的 RAID 配置,但在执行过程中会放弃一些写入性能。

一旦你能够真正衡量重要的事情,你就可以更准确、更客观地定义你想要达到的性能数字,并且可以看到它们何时下滑。了解了这一点,你就可以跟进下一组问题,这些问题基本上可以总结为:我怎样才能让这些特定的数字回到我想要的范围内?有了绩效衡量标准,您将能够逐一做出微小的改变,并清楚地看到这些改变是有益还是有害。

没有“一刀切”的答案;没有每个系统管理员都应该立即调整到 11 的众所周知的参数清单。这取决于具体情况,而且通常是一个缓慢移动的目标。

无论你的项目是什么,我都祝你好运。

这个达到十一了!

答案4

抱歉,我看不到你的工作有什么收获。

假设你投入了 8 小时的工作来找出每个参数,并比较每个自建内核哪个使其“更快”。那么你可能会获得 1% 的性能提升。你的老板要为这项工作支付多少钱?难道你不能用同样的钱买更多的硬件来获得 8% 的性能提升吗?

相关内容