diff -u:内核开发的新内容
有时,一段新的代码最终会比作者预期的更有用。Alejandra Morales 最近推出了低温项目,作为他由 Christian Grothoff 监督的硕士论文的一部分。其想法是通过批量调度输入/输出操作来降低能耗。
这个想法被证明非常出色,以至于 H. Peter Anvin 不希望低温项目成为常规驱动程序,他希望它成为核心 Linux 输入/输出系统的一部分。另一方面,他也觉得程序员界面需要清理一下,使其更简洁。
Pavel Machek 也印象深刻,并表示这可以节省手机和平板电脑等始终处于低电量运行状态的设备的电量。Christian 证实,这确实是该代码的主要目标之一。
Christian 补充说,功耗节省似乎在 10% 左右,尽管这个数字可以通过增加或减少每个数据包的可容忍延迟量来向上或向下调整。
David Lang 也喜欢低温项目,并同意它应该进入核心输入/输出系统。他补充说,许多其他人也曾尝试完成类似的事情。这是内核中非常需要的功能。David 还指出,为了进入核心输入/输出系统,低温项目代码必须证明它对不使用其功能的代码没有性能影响,或者影响将是最小的。
Luis R. Rodriguez 最近指出,许多驱动程序通常会被反向移植到大量的旧内核,一直到 2.6.24 版本。虽然他承认目前这是可管理的,但他预计驱动程序和其他可反向移植功能的数量将继续增加,使得情况越来越难以维持。
Luis 说内核人员应该做更多的工作来教育用户了解升级的必要性。但是,他还写了一份建议,建议内核人员使用 Coccinelle 来自动化反向移植过程 (http://www.do-not-panic.com/2014/04/automatic-linux-kernel-backporting-with-coccinelle.html)。
Coccinelle 是一种用于以编程方式转换源代码的工具。它可以用于生成对早期内核代码的更改,以匹配较新补丁提供的功能。这太疯狂了,但可能真的有效!
但为了开始,Luis 想要在将接收反向移植的内核和不会接收反向移植的内核之间划清界限。希望这条界限只会向前移动。因此,他向 linux-kernel 邮件列表成员普遍询问,他们真正需要继续使用的最早的内核是哪些。
结果证明,Arend van Spriel 知道 Broadcom WLAN 测试人员 仍然依赖于运行 2.6.38 内核的 Fedora 15。他说他正在与他们合作升级到 Fedora 19 和 3.13 内核,但这尚未实现。
因此,似乎一定数量的反向移植将变得自动化,但当然,Coccinelle 转换仍然需要由某人编写和维护,这就是 Luis 想要限制目标内核数量的原因。
事实证明,Windows 在某些方面比 Linux 做得更好——例如,在重启领域。显然,可以在软件中完成多种技术来导致系统重启。但在某些情况下,Linux 系统会成功关闭,然后无法再次启动。例如,这在人力最少的服务器机房中是一个问题。如果 20 个系统出现故障,而您想要全部重启它们,那么从远程终端发出单个命令比派人到嘈杂寒冷的环境中手动按下每个复位按钮要容易得多。
一种重启技术涉及将某些值发送到系统上的 0xCF9 端口。另一种是使用来自 Intel 的 EFI(可扩展固件接口)BIOS 替代品。根据具体情况,首选一种或另一种重启技术,但这种选择背后的逻辑可能很棘手。特别是,更改各种硬件的状态可能会更改适当的重启技术。因此,如果您进行一系列重启尝试,并在过程中以某种方式更改硬件状态,您可能会发现所有尝试都无法成功。
关于这个特殊错误最酷的事情是 Linus Torvalds 直截了当地说 Windows 一定在某些方面做得对,而 Linux 人员需要弄清楚那是什么,以便 Linux 也能做得对。
Steven Rostedt 指出了他的一个系统中的启动失败,这触发了错误查找。部分问题在于,当系统启动时,很难准确理解系统发生了什么。显然,会调用一些奇怪的魔法力量。
在一次有些激烈的辩论过程中,Matthew Garrett 总结了他认为的根本问题,以及为什么这个问题如此难以解决。在回应任何各种启动尝试时,他说,“就我们所知,固件正在运行大量的代码来响应任何这些寄存器访问。我们不知道该代码会触及哪些其他硬件。我们不知道它有什么期望。我们不知道它是人编写的,还是由某种模拟退火机制编写的,最终崩溃到 Windows 重启的状态。”
Matthew 赞成完全放弃 0xCF9 启动技术。他辩称,“我们知道 CF9 修复了一些机器。我们知道它破坏了一些机器。我们不知道它修复了多少机器或破坏了多少机器。我们不知道每当我们调整顺序或引入新的启发式方法时,有多少机器从工作状态翻转到损坏状态。我们不知道有多少机器从损坏状态变为工作状态。我们能够合理地确定硬件能够工作的唯一方法是精确复制 Windows 所做的事情,因为这就是大多数供应商将测试的全部内容。”
但是,Linus Torvalds 认为放弃 CF9 等同于在问题上胡乱挥舞。在讨论过程中,他说,“如果有人能够弄清楚 Windows 究竟做了什么,那将很有趣,因为很多 Dell 机器需要 quirks 几乎可以肯定意味着是我们做错了什么。Dell 通常不会做很多花哨的奇怪的事情。我几乎可以保证这是因为我们做了一些 Windows 没有做过的奇怪的事情。”
讨论没有结果——可能是因为它是一个非常棘手的问题,只影响相对少量的系统。显然,错误查找——以及辩论——将继续进行。