我敬佩的兄弟李少华,最杰出的国人Linux内核开发者之一,在操蛋的2018年离开了我们。
2018年最后一天,今天在商场溜娃,忽然看到少华妻子的朋友圈提到李少华于12月28日离开了我们。我知道少华前阵子身体不好但有好转,这心痛的消息来得太突然,眼泪一下就出来了。家人也发现了我忽然情绪低沉,我忍不住眼泪颤抖的说“少华走了”。
李少华是我们这一辈Linux内核开发者之中的杰出代表,应该说是目前华人圈最优秀和最重要的Linux内核开发者之一,他除了是内核子系统MD(软raid)的维护者之外,在块设备层,I/O调度器,NVMe,内存管理,电源管理等领域都做出了非常重要的工作。他的代码和对内核的改进,融合在整个内核在IO和存储站的方方面面,真的是通过很具体的工作,贡献了正能量,让这世界变得更美好了些许。
和少华家人联系后得知,在最后的时候,少华还时不时的提起“我有了一个新的想法”,“这段代码路径还可以再优化改进”。这是一个多么纯粹的人,对系统软件技术充满的虔诚的纯真的热爱,我心想恐怕也只有这般专注,才能成为一个改变世界的人。很多人活一辈子,恐怕也没有少华这三十几年来的闪亮和耀眼。一辈子活成这样,从个人来说,没有遗憾,是我们心目中的英雄!
我和少华最直接的工作交集,我印象最深的有两件事情。
第一件事情是我在解决MD raid1在NVMe SSD上的读写性能瓶颈时,少华认为我的修改可能会在多层MD设备堆叠的时候引入死锁,而我认为不会。我们在邮件列表里来回讨论了很多次,他指导我来理解MD代码中的一些细节,最终我们发现MD raid1在发射IO的时候会从另外一个raid1d()线程来处理,所以不会在generic_make_request()里面发生死锁,少华鼓励我“这是很好的讨论”,然后接受了我的patch。而后来少华还发现了我的patch里的其他问题,直接就修掉了。在少华的帮助下,除了我们将MD raid1的读性能提升了好几倍之外,我也对MD的基本原理有了更深刻的认识。
第二件事情是有用户报告MD raid0在NVMe SSD上做trim的时候时间非常久,我自己测试在15T的NVMe raid0设备上格式化xfs文件系统(加trim)需要300多秒,绝大多数时间都用在trim这里了,这是很不正常的。少华分析这是因为raid0会将上层发来的discard bio按照stripe大小做切分,然后再发送到raid0组成的不同硬盘上去,所以当raid0容量比较大的时候,原本的一个discard bio可能会被切分成几百甚至上千万个小bio来处理,这性能一下就降低了。我们的思路是将切分后的bio再根据每一个raid0的组件设备拼接起来,最后可以组成连续的一个或者极少数几个bio,然后再将拼接后的bio发送到每一个组件设备上去,这样就可以降低几百万个bio了。我先写了一个很复杂的patch,来准确的将所有切分的bio按照每个设备一个bio的方式拼接起来。虽然拼接出来的bio最少,但是代码非常难读懂。少华后来做了一个实现,大概几十行代码,做了一个次优化版本:
raid0_handle_discard()核心代码片段
少华的代码,通过一个很优雅的循环,就完成了将分布在不同组件设备上的bio的拼接,并且在绝大多数通常情况下,拼接效果和我的复杂代码一样,速度还更快!最后我测试出来,少华的这个代码可以将在raid0上格式化xfs文件系统的速度从300多秒降低到20多秒。当我阅读少华的patch时,心中充满的欣赏和愉悦,能看到一段更优雅和高效的代码,真的是非常愉悦的事情,而且这种好心情可以持续很久,每每想起都会觉得开心。
再后来我接受了bcache子系统的维护工作,和少华一起密切合作的机会就少了很多。但我一直在关注他在内核里的工作,看到他继续在做的很多优秀的工作。非常切合实际的说,少华是为Linux内核做贡献的最杰出和最重要的中国人之一,从全球华人的范围来看他的工作重要性也能够进入前20位。而他还这么年轻,还不到40岁,实在是我们这辈人之中的璀璨明星,能和他一起工作是我的骄傲和荣幸!
在写这些文字的时候,不禁回想起从最初认识少华,那时他在Intel OTC我在SUSE Labs,他在做性能相关,我在做文件系统。然后2009 年我们在CLSF[1]会议上第一次见面,然后2010年他和其他Intel朋友一起帮忙在Intel紫竹园区举行第二届CLSF。再后来他离开了Intel去了存储领域创新独角兽公司Fusion IO,在PCIe SSD、IO调度器和块设备层做了大量的优秀工作。在我加入阿里组建淘宝内核组的时候,他已经决定去Facebook内核团队,和Jens Axboe, Chiris Mason, Tanjun Heo等国际顶级内核黑客一起工作,很遗憾没有机会和他做同事。少华一直是我们这一批人中最耀眼最杰出的极少数几个人。我在2016年遇到参加Kernel Summit的Tanjun Heo的时候,他特意反复几次的提到,少华非常优秀,在块设备层做了很多优秀的工作。能够被顶级黑客这样评价的人,少之又少,而我认识的国人之中大概也就两三个人吧。当时我意识到,经过长期不懈的努力工作,在Linux内核开发领域,少华已经跻身全球最好的IO栈开发者之列了。
从git log里看到少华的大量的贡献,我感觉到少华虽然人离开了我们,但是他的代码,仍然散发着他的才华,继续在为世界做贡献。在今后的工作中,我们还会继续阅读他的代码,就像和他在谈心,对于熟悉他的人而言,这虽然心酸,也是和老朋友对话的最好的方式。而我也知道,他的代码以及他所维护的MD子系统,在工业届被广泛应用。譬如现在火热的PD-1/PD-L1生物制药领域,通过大数据的方式来分析DNA特征,其中的信息处理系统中Linux内核和高性能IO栈肯定被广泛的使用到了。少华虽然离开了我们,他为这个世界留下的贡献,仍然在为创造更美好的世界发挥价值。
我们都会离开这个世界,或早或晚,命不在长短而在价值,活得有价值是很幸运的。很痛心少华过早的离开了我们,但我也很羡慕他的人生活出了精彩,他自己的不懈奋斗为这操蛋的世界带来了更多的光亮。这光亮,对家人对朋友,都是鼓励和激励,让我们继续在这操蛋的世界里,为更好的世界努力不懈,也享受生活中点滴的幸福。感激少华,你短暂的一生所创造的温暖和快乐,让我感受到这世界多一点的善意和希望。
CLSF[1]: China Linux Storage, Memory management & File system Workshp
Linux阅码场也总结了少华的patch list:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=shaohua&from=groupmessage
逝者已矣,生者如斯。而代码,却永远地留在了Linux内核里。这是一个Linux开发者的足迹,也是我们可以永久寄托哀思的地方。
....
来源:oschina
链接:https://my.oschina.net/u/920274/blog/2996648