谷歌|谷歌数据中心尝试转向主线内核,发起新的项目Project Icebreaker

整理 | 祝涛
出品 | CSDN(ID:CSDNnews)
近日Google发起了一个新的内核项目Project Icebreaker,旨在解决两个问题:紧跟主线内核,让Google为产品引入的新特性能更容易递交到上游的主线内核;能在内核生产环境中运行任意 Google 程序,在Prodkernel变更内核版本前验证上游变化。
谷歌|谷歌数据中心尝试转向主线内核,发起新的项目Project Icebreaker
文章图片

来源于谷歌数据中心官网
Google数据中心(Google Data Centers)是谷歌用来提供服务的计算机软件和大型硬件资源等技术基础设施。美国有13间;欧洲有6间;亚洲有2间;南美洲有1间。
Google数据中心产品系统运行的内核被称为Prodkernel,它是基于旧版本的Linux kernel,加上Google打上的大约9000个补丁,补丁包括各种内部API、硬件支持、性能优化,以及其它必要的微调。每隔两年左右时间,这些补丁会移植到较新版本的Linux kernel。
Project Icebreaker的提出 【谷歌|谷歌数据中心尝试转向主线内核,发起新的项目Project Icebreaker】Google发现这种工作模式面临越来越大的挑战,原因包括:内核在两年中变化很大,跟踪bug会耗费大量时间。但Google也无法直接使用主线内核,因为它的工作负荷需要的某个特性在主线内核中可能并不存在。雪上加霜的是,Google为其产品开发的每一个特性都是在Prodkernel上开发和测试的。Prodkernel与主线内核之间的巨大差异给开发增加了越来越多的难度。
为了解决这个问题,谷歌的两位工程师Andrew Delgadillo 和Dylan Hatch来到2021年的北美开源峰会,讨论一个项目——破冰计划Project Icebreaker。
Project Icebreaker有两个主要目标:

  • 首先,与上游内核保持紧密的距离。这个想法旨在为每一个主要的上游内核版本发布一个新内核,让Google为产品引入的新特性能更容易递交到上游的主线内核。
  • 第二个目标是能够在该内核的生产环境中运行任意谷歌二进制文件,这将是一个“真正的生产内核”,在Prodkernel变更内核版本前验证上游变化。
这些目标很重要,因为团队需要“更好的上游参与”。
结构 工程师说,在考察Icebreaker的工作结构时,要考虑两方面:
  • 一方面是如何开发特性以便将它们部署到Icebreaker内核上。
  • 另一方面是那些补丁需要如何升级,以便将它们放到下一个Icebreaker版本的新主线内核中。
工程师Hatch认为,Icebreaker比目前的prokernel方案更有利于上游。Icebreaker特性分支是在一个最新的主线内核上完成的,它们通过这种方式进行测试,所以测试结果与上游更相关。这将允许开发者更容易地为主线提供特性。
风险 Icebreaker也存在一些风险:
  • 其中一个较大的问题是需要大量的特性分支测试。
  • 此外,功能之间的依赖关系也可能是Icebreaker的风险。
  • 另一个风险是Icebreaker的集中化程度远低于Prodkernel进程。
  • 最后一个风险是,Icebreaker的功能确实需要靠近上游,否则它将再次退化到Prodkernel。但如果越来越多的补丁加入到Icebreaker中,而不减少被合并的补丁,团队将无法跟上主线。
现状与未来 目前Icebreaker是基于5.13 kernel,而最新的内核版本是 5.14,而5.15内核还处于发布候选阶段。
Icebreaker计划在5.15或5.16紧紧抓住上游,这将是项目的转折点。工程师说,到那时,它将“乘风而上”。可能会出现的一个问题是,功能维护者不得不每隔三、四周重新调整并修复冲突——在Prodkernel模型中,这种情况大约每两年发生一次。一旦项目赶上进度,就只需要每十周左右进行一次调整,并与主线计划保持一致。
参考链接:
  • https://lwn.net/SubscriberLink/871195/d7e9acf5894446e6/
  • https://www.google.com/intl/zh-CN/about/datacenters/

    推荐阅读