(给程序员的那些事加星标)

【程序员的那些事导读】:2019 年 1 月 2 日,Linux 内核邮件列表发布了一则悲伤的消息:Linux 内核开发者李少华因癌已于 2018 年圣诞节期间离世。

下面是李少华的好友 Coly Li 最近写的一篇文章。

www.weibo.com/ttarticle/p/show?id=2309404323330038621366#_0

追思心中璀璨的明星:杰出内核开发者李少华

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 Workshop

推荐阅读

(点击标题可跳转阅读)

Linux 内核去年新增 87 万行代码,Linus 提交量最多

近两万人维护的 Linux 内核行数已超 2500 万

看完本文有收获?请分享给更多人

关注「程序员的那些事」加星标,不错过圈内事

有的人走了,但他的代码还闪耀着光芒相关推荐

  1. 读后感:走钢索的人---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十七)

    走钢索的人---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十七) http://blog.csdn.net/david_lv/archive/2008/06/15/2548210.aspx ...

  2. ACM这条路不好走,但还是有很多人走在这条路上

    ACM这条路不好走,但还是有很多人走在这条路上. 弱校里面也有ACM强者,只是这条路,异常艰辛. 我只想让这个世界,听听我们的故事,听听我们的声音. 真的,有了决心,有了目标,有了耐心,这才是一个人的 ...

  3. 金山庆祝成立30周年 雷军:一个人走得快 但一群人走得远

    雷帝网 乐天 12月23日报道 金山集团日前在珠海庆祝成立30周年,金山软件董事长雷军.创始人张旋龙.求伯君及众多金山系众多知名创业者,如B站CEO陈睿.暴风CEO冯鑫.蓝港创始人王峰均出席. 雷军日 ...

  4. python画小猪佩奇视频_用 Python 20 秒画完小猪佩奇“社会人”!附效果视频+完整代码...

    原标题:用 Python 20 秒画完小猪佩奇"社会人"!附效果视频+完整代码 导读:今年社交平台上最火的带货女王是谁?范冰冰?杨幂?Angelababy?不,是猪猪女孩小猪佩奇. ...

  5. “要想走的更快一个人走,要想走的更远一群人走”志向远大的大学生的HCIE之路...

    2018.3.7 9:30收到邮件的那一刻13个月IE路程正式告一段落.收到PASS邮件既在意料之中又无比兴奋,回想起去年2月份第一次跟班学NA的时刻,往事犹如那一幅幅胶卷在脑海中放映. 2016年下 ...

  6. 《少有人走的路:心智成熟的旅程》--[美]M·斯科特·派克

    <少有人走的路>,美国作家M·斯科特·派克所著 下面是我的书摘: * 归根到底,它告诉我们怎样找到真正的自我. * 人可以拒绝任何东西,但绝对不可以决绝成熟.决绝成熟,实际上就是在规避问题 ...

  7. 跟随鼠标走的文字的html代码,跟随鼠标走的文字的HTML代码

    跟随鼠标走的文字的HTML代码 跟着鼠标走的文字 visibility:visible; top:-50px; font-size:12pt; font-family:隶书; color: 00001 ...

  8. 懒人必备!只需一行代码,就能导入所有的Python库

    今天给大家介绍一个懒人Python库--Pyforest. 使用一行代码,就能导入所有的Python库(本地已经安装的). GitHub地址:https://github.com/8080labs/p ...

  9. 有的人走着走着就散了!

    1 有的人走着走着 就走了上坡路 ▼ 2 没有感情的甩绳机器 ▼ 3 大男孩们陪小朋友踢球 到底谁玩的比较开心 ▼ 4 给我妈妈演示一下 我在肚子里的时候是怎么踹你的 ▼ 5 狗子:谢谢您嘞,我这是耳 ...

最新文章

  1. LeetCode简单题之检查是否所有 A 都在 B 之前
  2. 企业网站设计方案需先明确网站主题
  3. 本博客Matlab、FPGA代码获取方法
  4. 阿里高级算法专家公开10大思考
  5. java 常用流_Java流类图结构: 流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数...
  6. 使用memcmp函数判断两个函数的前n位字节数是否相等
  7. 互联网进入智慧互联时代 CSS将推进行业安全生态建设
  8. java基础27 单例集合Collection及其常用方法
  9. cisco 交换机 定期 自动 备份配置 -linux,cisco 交换机自动备份配置
  10. 支付宝小程序芝麻信用分授权配置
  11. 用计算机画图教案,电脑绘画美术教案设计
  12. 「计算机网络」五层因特网协议栈的简要介绍和分组名称
  13. wap 第六章 svg 路径
  14. 基于JSP的鲜花店商城平台【数据库设计、源码、开题报告】
  15. Linux系统下SVN服务器的搭建过程详解 UpJ}s7+
  16. pdo 参数绑定中 where 子句中的错误的解决
  17. 上海计算机一级同等水平,上海计算机等级考试哪一级最难(全国计算机一级考试难吗)...
  18. Python金融系列第八篇:Fama-French 多因子模型
  19. TIOBE 2012年9月编程语言排行榜:C语言老当益壮
  20. Linux三行命令快速安装jdk和jre(javac)

热门文章

  1. Django搭建简易小说网
  2. FPGA中LUT设计
  3. 深度学习模型,为诊断糖尿病视网膜病变带来福音
  4. 洛谷P2356 弹珠游戏
  5. X-Y非线性关系或U型倒U型曲线的检验
  6. 关于语义相似度匹配的问题
  7. Google天涯问答提问遭遇
  8. GhostXP_SP2电脑公司特别版_5.5
  9. 常用测试工具-----龙卷风
  10. Argox(立象)打印机