追思心中璀璨的明星:傑出內核開發者李少華

 

640?wx_fmt=png

 

640?wx_fmt=png

我敬佩的兄弟李少華,最傑出的國人Linux內核開發者之一,在操蛋的2018年離開了咱們。linux

2018年最後一天,今天在商場溜娃,突然看到少華妻子的朋友圈提到李少華於12月28日離開了咱們。我知道少華前陣子身體很差但有好轉,這心痛的消息來得太忽然,眼淚一下就出來了。家人也發現了我突然情緒低沉,我忍不住眼淚顫抖的說「少華走了」。git

李少華是咱們這一輩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最少,可是代碼很是難讀懂。少華後來作了一個實現,大概幾十行代碼,作了一個次優化版本:線程

640?wx_fmt=jpeg

raid0_handle_discard()核心代碼片斷ip

少華的代碼,經過一個很優雅的循環,就完成了將分佈在不一樣組件設備上的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開發者的足跡,也是咱們能夠永久寄託哀思的地方。

640?wx_fmt=png

....

相關文章
相關標籤/搜索