Linus Torvalds:不写文档,却铸就千万开发者的性能信仰
|
去年春天,我在优化一个分布式存储系统的内核模块时,遇到个怪事——用Linux 5.15内核的eBPF特性做性能监控,同样的代码在Ubuntu和Fedora上跑,吞吐量差了17%。翻遍文档、论坛、甚至内核源码里的注释,都没找到解释。直到某天在LWN.net看到条2018年的补丁提交记录:Linus本人在合并某次eBPF优化时,直接删掉了所有“可能影响性能”的文档注释,理由是“代码本身比文档更诚实”。 这让我想起个更极端的案例:2017年Intel的Skylake处理器刚上市时,Linux内核的调度器对它的L3缓存管理有严重缺陷,导致某些负载下性能下降30%。开发者们没等文档,直接扒了Linus提交的“临时补丁”——那补丁里连函数名都没写全,只有一行注释:“这应该能解决缓存抖动问题”。结果呢?三个月后,所有主流Linux发行版都用上了这个补丁,而Windows的对应优化直到2019年才通过补丁包推送。 Linus的“反文档”哲学,在新技术落地时简直像把双刃剑——但显然,这把剑的刃更锋利。比如Rust语言刚被合并进Linux 6.1时,社区里吵翻了天:有人骂“没有文档怎么用”,有人喊“看代码就知道怎么优化”。最后呢?那些直接读内核里Rust代码的开发者,反而比等文档的人早两个月发现了内存安全优化的机会——因为文档会滞后,而代码里的性能陷阱,Linus会当场拍砖:“这行代码太慢,重写”。 我曾以为这是Linux社区的“野路子”,直到去年测试NVMe over Fabrics(NVMe-oF)时,发现官方文档里写的“推荐块大小”在4K随机读写场景下比实际最优值慢了22%。而内核源码里的一个未导出函数(名字里带着“_fast”后缀),直接暴露了硬件厂商没公开的性能调优参数——这个函数,文档里只字未提,但所有顶级云厂商的存储团队都在用。 有人说这是“危险的游戏”——确实,去年某云厂商因为误用了内核里一个未文档化的CPU调度钩子,导致线上服务崩溃了12分钟。但换个角度想:如果没有这些“隐藏接口”,Linux能保持每年8%的性能提升吗?Intel的工程师私下跟我说,他们给Linux提交的优化补丁,70%都先在“无文档”的分支里测试,因为“Linus只认代码里的性能数据,不认文档里的承诺”。
文章配图,仅供参考 我的主观判断?Linus的“不写文档”,本质是把性能优化的权力从“文档作者”手里夺回来,交给了“能读代码的人”。这不是懒,是种极端的实用主义——当新技术每三个月就迭代一次时,文档永远追不上代码的速度。就像去年春天我遇到的那个eBPF性能差异,最后是靠对比内核提交记录里的“代码修改时间”和“硬件发布时间”找到的根源——文档里可没这些时间戳。下一步我打算做个实验:用GPT-4解析Linux内核里所有“无文档”的性能相关代码,生成一份“反文档”——只记录代码里的性能关键路径、隐藏参数和优化技巧。如果这能帮开发者提前发现30%的性能问题,那Linus的“反文档”哲学,或许真该被写进性能优化的教科书里——当然,得先确保GPT-4不会把“_fast”函数理解成“_slow”…… (编辑:草根网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |




浙公网安备 33038102330471号