作者tuxoko (tux)
看板Soft_Job
標題Re: [閒聊] Linux Kernel 開發者的生活
時間Wed Dec 2 17:40:34 2015
我不知道本魯該不該算是個 Linux Kernel 開發者
我只有 submit 過 2 個很小的 patches 到 mainline,而且都不是核心
總之我主要做的事情都是 out of tree 的
我一開始接觸這塊 是因為工作上要求而自幹了一個 remote filesystem
那個時候就靠從 fs 相關 syscall 開始 trace code 進 VFS layer
然後看他跟各個 filesystem operations 如何搭上
我大概花了一個禮拜的時間做出一個可以 mount 的 prototype
然後再慢慢的把剩下的 syscall 相關的 operation 補上
那段時間我過的真的蠻充實的
我從完全沒有 Kernel 開發經驗 到 VFS 由裡到外弄懂 (很舊的版本 現在又變好多QQ)
還弄懂各種 Synchronizaion: ticket spinlock, mutex, wait_queue, RCU
還有各種 Debugging 技巧: 看懂 oops/decodecode, Magic sysrq, kexec/kdump
這些基本上都是我自學的
總之我目前主要參與的是 ZFS on Linux (還是filesystem相關...)
我目前主要都是一些bugfix 和支援新版 kernel 相容性為主
我最大的貢獻是改進ZFS 的 memory management
那個pull request 已經一年多了還沒merge 進去QQ
另外我有幾個race condition 的bugfix 也是令我滿自豪的
比如有一個存在已久跟 mutex 相關的 race/memory corrution 大家都摸不著頭緒是
被我解掉的
另外發一下牢騷,ZFS 因為是從 Solaris/Illumos porting 過來的
很多 API 都要包裝過,用在Linux 上往往都會有一些小問題要work around
然後他們的Lock ordering 非常的 sloppy,而且沒有註解清楚這些 Lock 到底是要保護
什麼,導致常常會有lock inversion deadlock 出現。
我常常腦海裏面都有砍掉重練的聲音,可是 ZFS 實在是太龐大的QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 50.135.204.227
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1449049236.A.C5B.html
1F:推 beemos: 你絕對是啊! 12/02 17:58
2F:→ dreamnook: 囧" 12/02 18:10
3F:推 james732: 推強者 12/02 18:29
4F:→ king19880326: 比較想知道這樣的程度薪水在台灣/美國可以開到多少 12/02 18:34
5F:推 shortoneal: 我怎麼感覺我認識你.....XD 12/02 18:35
6F:推 amatt: 這跟薪水只有間接關係 12/02 18:48
7F:推 ggBird: 強者,可以分享deadlock 的除錯經驗嗎? 12/02 19:08
解 deadlock 也沒有什麼特殊技巧,就是運用現有的工具像 softlockup,
hardlockup detector, hung task detector,有了這些 deadlock 時多半會出現
問題 thread 的 call trace,再利用這些分析問題點在哪。如果沒有打開那些功能
也可以用 sysrq-l sysrq-w 之類的。
另外 Kernel 有內建強大的 Lock ordering 分析器 Lockdep。他可以動態建立各種
Lock class 之間的相依性,然後印出所有可能 deadlock 的地方。
可是因為 ZFS 沒有嚴謹的 Lock class ordering,所以一開 Lockdep 馬上就吐一對東西
出來,所以目前還沒辦法用在 ZFS 上。QQ
8F:推 seebass: 實務上ZFS in Linux 還是不夠穩定,尤其在Ubuntu short t 12/02 20:49
9F:→ seebass: erm 版本上 12/02 20:49
10F:推 raix852: 推強者 小魯只有研究兩個月就沒再碰了 12/02 20:57
11F:推 ahwater01: 快來看強者!! 12/02 21:07
12F:推 onlywig: 跪求教我OOPS debug技巧 12/02 21:48
oops 也沒什麼特殊技巧,先把 "Code: 48 89 45 c8 0f ..." 這行
餵進 scripts/decodecode 就可以得到問題點的 assembly
對照到 source code,然後利用 register 的值就可以大概推出當時的 state。
剩下的就是根據問題的種類想辦法分析了
13F:→ wens: 好強大... 12/02 22:50
14F:→ wens: 不過pull request沒下文是怎樣 orz 12/02 22:51
也不算沒下文啦,這段時間我偶爾會更新一下,也有一些人有持續使用
只是說他動到的範圍太大,怕會影響跟 illumos 之間的流動性所以暫時還沒進去
這段 code illumos 也正在 porting 回去,所以應該可見的未來會進去吧...
話說你不是 maintainer 嗎? Maintainer 的等級不是比較高嗎?
15F:推 RouterHsieh: 這種才是真正的kernel developer啊..XD 12/03 00:47
16F:推 jily: 推強者! 12/03 09:46
17F:→ dinos: 朝聖! 12/03 10:32
18F:推 vn509942: 跪 12/03 12:50
※ 編輯: tuxoko (50.135.204.227), 12/03/2015 13:49:40
19F:→ zaqimon: Linux kernel神人才懂 尤其那組語絕對不會是一行一行跑 12/03 16:18
20F:→ zaqimon: 各種不同CPU平台 各種硬體 各種memory barrier最佳化... 12/03 16:20