谷歌向主线靠拢

​Google数据中心产品系统运行的内核被称为Prodkernel,它是基于旧版本的Linux kernel,加上Google打上的大约9000个补丁,补丁包括各种内部API、硬件支持、性能优化,以及其它必要的微调。

每隔两年左右时间,这些补丁会移植到较新版本的Linux kernel。

Google发现这种工作模式面临越来越大的挑战,原因包括:内核在两年中变化很大,跟踪bug会耗费大量时间。但Google也无法直接使用主线内核,因为它的工作负荷需要的某个特性在主线内核中可能并不存在。

雪上加霜的是,Google为其产品开发的每一个特性都是在Prodkernel上开发和测试的。Prodkernel与主线内核之间的巨大差异给开发增加了越来越多的难度。

为了解决这个问题,谷歌的两位工程师Andrew Delgadillo 和Dylan Hatch来到2021年的北美开源峰会,讨论一个项目——破冰计划Project Icebreaker。

Project Icebreaker有两个主要目标:

首先,与上游内核保持紧密的距离。这个想法旨在为每一个主要的上游内核版本发布一个新内核,让Google为产品引入的新特性能更容易递交到上游的主线内核。

其次,是能够在该内核的生产环境中运行任意谷歌二进制文件,这将是一个“真正的生产内核”,在Prodkernel变更内核版本前验证上游变化。

这些目标很重要,因为团队需要“更好的上游参与”。

说白了,谷歌不想被时代抛弃。

自linux推出后,在全世界数百万程序员的帮助下,得到巨大的发展。谷歌虽然是屈指可数的大公司,但是公司职员都是在做有利可图的事,维护旧代码属于技术负债,没多少人愿意做。

以前谷歌还允许职员每天抽出20%的时间用于从事创新性研究,后来谷歌彻底抛弃了那种浪漫精神,公司员工必须全身心地从事与公司主业相关的工作。

对于老代码,大多数人的态度是,只要能运行,就尽量不要去重构。

而且对于大公司而言,稳定压倒一切,没有人愿意进行技术冒险。因此可以想像prodkernel的演化速度远不如主线内核快。

这事其实对国内有很大启示。

国内可能为了自主可控,学谷歌独立开一个分支,数年后,因为没有多少人维护,分支与主线的差距越来越大,以至于都不能实现二进制兼容。

除非中国能拿出几百万程序员从事内核维护,否则,中国基于linux内核的系统必然遭遇谷歌式的困境。

现在也许看不出来,十几年后,当国外的内核已经用上加特林机关枪时,我们的内核仍然在使用汉阳造的老步枪。

2021年9月24时,龙芯中科.NET团队完成了.NET3.1-LoongArch64平台研发工作,研发的成功标志着围绕龙芯自主指令系统LoongArch的生态建设成果再进一步。

不知龙芯什么时候可以支持.NET 5/6。

人无远虎,必有近忧。

全部专栏