
整理 | 郑丽媛
出品 | CSDN(ID:CSDNnews)
在这个什么都讲“提效节能”的年代,如果告知你,仅靠修改 Linux 内核中 30 行左右的代码,就能让数据中心能耗降低 30%,你敢信吗?
听起来有些夸张?但这的确 是来自加拿大滑铁卢大学的一项真实研究成果,而且已经被并入 Linux Kernel 6.13!


数据中心的“脑力劳动”出了问题?
我们都知道,现代数据中心是 AI 时代的“算力发动机”。不管是你让 ChatGPT 写的段子,还是正在加载的一张美图,它们背后都离不开数据中心日以继夜地运转着数十万甚至上百万个服务器节点。
不过,正由于运转得太“勤快”,数据中心已经成了用电大户。根据国际能源署(IEA)的预测,到 2030 年,数据中心的电力需求可能占到全球总用电量的 4%。在 AI 大模型加速落地的今天,这个数字只会更快逼近。
以 OpenAI 的 GPT-4 为例,它的训练过程据估算消耗了相当于 5000 个美国家庭一整年用电的电能——这还不包括推理阶段的耗电。可以说,AI 的算力焦虑正实实在在地转化为电力焦虑。
那么问题来了:这些电到底花在哪儿了?
加拿大滑铁卢大学的研究者发现,仅仅是在网络处理这个“看起来不起眼”的环节,就存在巨大的优化空间。

“主动轮询”+“智能切换”,巧妙应对流量波动
要理解这项优化,我们得先了解一点网络栈的“潜规则”。当服务器收到一个新的网络数据包时,Linux 内核的做法是:立刻发起一个中断请求(IRQ),强行打断 CPU 当前正在执行的任务,转去处理这个包。
乍一看没问题,响应快嘛。但问题在于,这种频繁的“打断—处理—返回”的过程,会导致 CPU 缓存失效,执行效率变低,而且超级耗电。用滑铁卢大学 Cheriton 计算机学院教授 Martin Karsten 的比喻来说:这就像在一个流水线上,一旦有新任务就有人大声喊停,所有人都得停下手中的事赶去处理,反复打断反而影响整体效率。
那有没有可能不被动等待中断,而是“我闲下来自己去看看有没有任务”?而这,正是 Martin Karsten 带领的研究团队想出的解决方案。他们与内容分发网络公司 Fastly 的首席工程师 Joe Damato 合作,开发出了一段约 30 行的代码,用于改善 Linux 网络流量的处理机制,其核心思想是:
-
高流量时段,关闭频繁的中断请求,改为采用主动轮询:CPU 每隔一小段时间主动去网络检查是否有新包;
-
低流量时段,重新启用传统中断模式,减少不必要的资源消耗。
简单来说,就是“忙的时候我自己去看,闲的时候你叫我一声”。这种动态切换机制充分结合了两种模式的优点,在节能的同时还能提升吞吐量、降低延迟。
更妙的是,整个改动只需要在 Linux 网络栈中修改约 30 行代码——没有引入任何新硬件、没有额外成本,仅仅改了几行老代码,就能让庞大的数据中心更省电、更高效。
“我们没有增加任何新功能,只是重新安排了执行顺序,”Martin Karsten 解释道,“就像在工厂流水线上稍微重新调整步骤,避免工人东奔西跑那样,让 CPU 缓存的利用更加高效。”

实测结果:性能提升 45%,能耗降低 30%
根据该研究团队给出的实测结果,这项优化不仅能降低能耗最多达 30%,还将数据处理吞吐量提升高达 45%,同时保持较低的尾延迟(tail latency),即系统在高负载下仍能快速响应关键请求。
值得一提的是,这项优化也已正式并入 Linux Kernel 6.13,正式成为 Linux 系统的一部分,意味着只要操作系统内核版本跟得上,所有基于 Linux 的服务系统都能无缝受益。

Martin Karsten 教授表明:“像 Amazon、Google、Meta 这样的科技巨头或多或少都会使用 Linux,但它们对启用什么特性超级谨慎。如果这些公司愿意在数据中心中开启这一优化方案,那么全球范围内每年可以节省数十亿度电。每一次互联网上的服务请求,也几乎都能从中受益。”
如他所说,在这个“谁的 AI 跑得快、谁的训练成本更低”的时代背景下,这项优化堪称开源社区给数据中心运营者的“节能大礼包”。
不过,尽管节能技术不断进步,但根据 Uptime Institute 的报告,全球仍有超过一半的数据中心并未追踪包括碳排放、可再生能源使用率等在内的关键可持续指标。更糟糕的是,还有不少企业甚至放松了原有的环保目标,以便给 AI 项目让路。
例如 Google 最近披露,其碳排放在 4 年内激增了 48%,主要缘由就是为了支撑 AI 布局而大规模扩建数据中心——这也引发了外界对“AI 是否真的可持续”的广泛质疑。
面对这个问题,IEEE 高级成员、贝尔法斯特女王大学工程学院教授 Aoife Foley 呼吁道,所以数据中心想要实现可持续发展,不仅要在代码优化上下功夫,还得从设计、建设阶段就思考环境因素,筛选暗数据、减少不必要存储、使用绿色能源。
参考链接:
https://www.techrepublic.com/article/data-centres-energy-reduction-code/
https://www.datacenterdynamics.com/en/news/changing-linux-code-could-cut-data-center-energy-use-by-30-researchers-claim/
如果您曾将 PayPal 集成到您的应用或项目中,并为此查阅过 PayPal 的集成文档,我们诚挚邀请您参与一项重大的问卷调研。
只需要 30 秒即可搞定问卷上的 6 个小问题(全部都是选择题)!为感谢您的宝贵时间,前 200 名完成问卷的开发者将获得一份精美礼品(快充头/保温杯/6合1充电器三选一)作为答谢。




如果是高优先级中断,被轮询代替,会导致高优先级任务延迟。要看应用场景,脱离场景讲能耗降低,丝毫不说影响,不是扯淡么
我们习惯了老外制定的规则,也静不下心来去干基础研究…其实老外也不一定都聪明,他们当时说不定也是搞个方案完成任务…
这不是 NAPI 机制么?2.6 版本就有了,都多久了
对于我这种做销售的,又不懂编程的人,看到这个帖子,就狠的牙痒痒。因为插不上话,也不敢多说,显得自己傻,我只想把键盘和鼠标卖的贵一点而已,
这种优化逻辑在业务代码很常见 没想到linux没采取。看来无论硬件还是软件,优化空间都挺大的
抛开应用场景来谈省电,这不白搭吗?这要是用到汽车上,等它轮询到了这条网络指令,已经晚了。这不是关键时刻却不行了吗?
这个比dpdk比有啥优势?
NAPI了解一下
屎山代码
我怎么觉得是鬼扯?网卡的工作不是使用优先级队列来安排工作的吗?
总觉得滑铁卢三个字=失败
在计算机专业人员的眼里,这可能又不算什么。
这个说明Linux系统快要过时了。鸿蒙系统,下一代系统,万物互联系统,分布式系统,将要统治世界。
我不懂编程,但我觉得这种方式对实时性任务可能造成不利影响,尤其是高优先级的。数据中心可能大部分时间都处于繁忙状态。不如单独划出一个线程用来处理临时任务的分配,根据优先级,确定是立即处理,还是插入队列等待顺序执行。
这不像极了有些公司干活的时候不停有人打断工作一样
我一直以为这个办法不上台面,我用这个方法写程序已经十几年了,最大缺点是存在堆叠,在主动查询的时间节点发现大量任务,造成节拍延迟,对强迫症的我来说很不舒服。当然,如果我不是用的单片机,这个问题就不明显了
轮询代替中断这种方式很多程序员应该都玩过,只是大家都认为这个比较low
数据中心专用补丁。数据中心在划分几个节点,A类用于处理满载流量,B类处理空闲流量。只要发现A类节点没有满载,所有其他节点都把数据发给A类节点;A类节点满载,那就从B类节点划分一步出来当作A类节点。这逻辑是不是像极了工作中的牛马、混子组合
加拿大这所大学的名字有什么来历?
难怪Linux的桌面交换这么容易卡,原来是系统一有新请求就中段现有任务,这逻辑看起来怎么这么傻?我一直以为Linux多任务卡是因为Linux软件是单线程运行的原因,原来是内核这么个机制