删除几行代码可以在Linux上实现“显著”节能

2020-05-22 17:35:31

定于下个月在Linux5.8内核周期中合并的补丁只需删除10行代码(好吧,6行代码和4行注释)就可以为某些系统带来显著的节能效果,这是因为内核代码中的一个疏忽已经持续了大约12年。作为PCI-Next更改的一部分,为Linux5.8构建的队列允许在PCI Express到PCI/PCI-X网桥的链路上进行活动状态电源管理(ASPM)。正如我们多年来在调查Linux ASPM问题时所看到的(从2011年开始的大功率倒退等),在正确工作的情况下可以节省相当多的电量。但是到目前为止,事实证明PCIe到PCI(和PCI-X)桥还没有让Linux内核在这些链路上启用ASPM,从而可以使CPU保持在比其他情况下可能实现的更高的功率状态。同时,Windows确实为PCIe到PCI/PCI-X网桥启用了PCIe ASPM。在启用ASPM的补丁中,由于一些未记录的原因,ASPM代码在2008年合并回Linux内核,禁用了PCI网桥的ASPM。现在到了2020年,这个代码只是被删除了。此补丁只需删除检查下游组件是否为PCI网桥的几行代码,进而禁用ASPM。该补丁指出,在指向该补丁的链接上启用ASPM允许英特尔SoC进入更深的封装C状态,这是一项显著的节能措施。在本月早些时候一位Canonical内核工程师的错误报告之后,最初的补丁还引用了大量不必要的功耗。删除内核中12年来一直被忽视的几行代码的影响。因此,如果您的系统具有PCI Express到PCI桥,就像在许多服务器/工作站主板上可以找到的那样,请在Linux5.8中查找此补丁,并且很可能会被重新移植到稳定分支。