2024 年终总结

探索、升级、再探索

跨过 2025 新年的钟声,才开始真正动笔写 2024 年终总结。原因无他,经历了前几周高强度工作、搬家、出差,终于在年底颓了。过完了年,还是得重整旗鼓,不如先把去年的总结了结了再说。2024 年总结下来是“探索、升级、再探索”,组成了自己的新家庭,升级了人生角色,工作上探索了诸多未知领域,年底也顺利晋升一级,25 年再探索成为更优秀的人。

今年的工作内容算得上是挑战最大的一年。

几乎 90% 的精力都投入在了 Transparent Socket Impersonation(TSI)特性上,它能够将 guest 的网络流量(AF_INET)通过 vsock 隧道(AF_VSOCK)转发到 host 上(VMM)。在自评今年绩效的时候,我翻了翻今年的周报和 TODO List,发现我从 2023 年 12 月就开始着手实现这项工作了。在不安的、以“求变”为风气的国内互联网公司里,在人人都往 AI 里钻的岁月里,能把一件事以年的维度做深做透做成,我还是感觉很幸福的,当然少不了我的老板们的技术视野和技术定力。

虚拟化和 socket 这些涉及到内核的地方,遇到问题的时候时长有一种无力感——不知道从哪下手,哪怕是一个小模块也会牵扯出非常多的知识点,比如看 vsock 实现,要搞明白 rcu、spin lock、memory barrier 等。深入探究细节,又会在层层跳转中迷失方向。为了赶得上进度,很多时候照猫画虎,从别的地方查到了用法照搬过来。跑通是可以的,但是为什么这样能 work,个中细节想搞明白还是困难重重。让我觉得工作不够 solid。当然今年还是有一些深入的研究的,比如对 virtio 机制研究的比较透彻,年中在 Kata Containers 里发表了两篇系列文章来介绍 virtio 的工作原理,从阅读量和转发量来看,已经算得上本年度的最佳文章了。25 年的第一个再探索目标是通读《深入 Linux 内核架构》,建立和完善知识体系。

TSI 要求完全兼容网络的 socket 接口,特别是 UDP,极高的灵活性意味着用户可能以各种姿势调用 socket 接口,调用顺序不同导致内部状态机变化需要被审慎考量。测试阶段是最心累的阶段,既是体力活,又是脑力活。线上环境调试极为困难,替换调试组件需要突破层层限制,而网络部分又经常使用异步 I/O以及足量的重试机制,用 strace 追踪系统调用时会产生大量无关且不连续的日志,寻找关键信息无异于大海捞针。不过,能进去把日志打印出来的已经算是条件优秀了,有的业务网络不通 pod 直接原地退出,连打印日志的机会都不给。很多时候,也只能从行为表现和杂乱的日志中寻找蛛丝马迹,然后对着代码一行行阅读,再给一个尝试性的修复,能成则烧高香,不成就重复上面的步骤再来一遍。计划 11 月收尾上线,直到 12 月中旬才通过了已有全部测试。刚调通的那天晚上,真想痛快地在办公室吼一嗓子。

今年也开始给内核贡献代码了,virtio-vsock: Add support for multi devicesvsock/virtio: Add support for multi-devices。前者是修改 virtio spec(规范)以使其支持 virtio-vsock 多设备,也是后者的前置工作。Virtio spec 的修改也就 40 多行,硬生生改了 5 版,时间跨度有半年之久,然而真正的实现代码,还没开始被 review,天知道 25 年能不能被合进去。这让我深深体验到了向内核贡献代码的不易。一方面是这些 gatekeepers 用爱发电,只在业余时间 review 代码,又由于时区差异,往往一次回复需要耗费一周的时间。另一方面,相比国内社区的短急快,给内核提交的代码几乎每一个字都会被认真 review,每一段都要被反复修改,哪怕只是一个规范文档。我无意对比孰对孰错,不过我更欣赏踏实的工作态度,慢就是快。尽管修改的过程备受煎熬,但我知道我在做对的事。

要说今年计算机领域趋势,AI 当之无愧。今年公司转型,“AI First”成为新的战略,也看到周围几乎所有同事都涌入到 GPU 和大模型领域,就害怕自己的工作跟 AI 不沾边。说实话,我不愿参与过多,不过另一方面,又生怕在新时代掉队。我一直认为一旦多数人蜂拥到一个领域的时候,其他领域经验就会显得难得可贵了。当然,要确保“其他领域”是有用的。恰好年底旭总提到了大模型的本质就是人类知识结晶的最浓缩的提炼,模型足够小意味着可分发性。而训练一个模型需要大量的人力和资源的投入,成本大幅上升,就意味着值得用更昂贵、更安全的技术保护这些数据资产,这或许就是机密计算的在大模型时代的意义。卖挖矿人铁锹也是门不错的生意。25 年要尝试在机密计算领域投入一部分精力,卷出点花样。

生活部分的回顾留给自己吧。

今年打卡了马来西亚、新加坡、张家界、云南、韩国、青岛、苏州和念念不忘的成都。哦!我还解锁了一项新运动——潜水。家庭角色上,今年升级成为了老公,成为了父亲(P.S. 2025 年开头实现的)。感谢我的老婆给予的支持,也感谢她承受了很多痛苦后为我们带来的一个超级可爱的小宝宝。身上的担子重了,但会更坚定的向前走。

Hello 2025!