Re: [閒聊] Linux Kernel 開發者的生活

看板Soft_Job (軟體人)作者 (tux)時間10年前 (2015/12/02 17:40), 10年前編輯推噓12(1208)
留言20則, 17人參與, 最新討論串3/7 (看更多)
我不知道本魯該不該算是個 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://www.ptt.cc/bbs/Soft_Job/M.1449049236.A.C5B.html

12/02 17:58, , 1F
你絕對是啊!
12/02 17:58, 1F

12/02 18:10, , 2F
囧"
12/02 18:10, 2F

12/02 18:29, , 3F
推強者
12/02 18:29, 3F

12/02 18:34, , 4F
比較想知道這樣的程度薪水在台灣/美國可以開到多少
12/02 18:34, 4F

12/02 18:35, , 5F
我怎麼感覺我認識你.....XD
12/02 18:35, 5F

12/02 18:48, , 6F
這跟薪水只有間接關係
12/02 18:48, 6F

12/02 19:08, , 7F
強者,可以分享deadlock 的除錯經驗嗎?
12/02 19:08, 7F
解 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

12/02 20:49, , 8F
實務上ZFS in Linux 還是不夠穩定,尤其在Ubuntu short t
12/02 20:49, 8F

12/02 20:49, , 9F
erm 版本上
12/02 20:49, 9F

12/02 20:57, , 10F
推強者 小魯只有研究兩個月就沒再碰了
12/02 20:57, 10F

12/02 21:07, , 11F
快來看強者!!
12/02 21:07, 11F

12/02 21:48, , 12F
跪求教我OOPS debug技巧
12/02 21:48, 12F
oops 也沒什麼特殊技巧,先把 "Code: 48 89 45 c8 0f ..." 這行 餵進 scripts/decodecode 就可以得到問題點的 assembly 對照到 source code,然後利用 register 的值就可以大概推出當時的 state。 剩下的就是根據問題的種類想辦法分析了

12/02 22:50, , 13F
好強大...
12/02 22:50, 13F

12/02 22:51, , 14F
不過pull request沒下文是怎樣 orz
12/02 22:51, 14F
也不算沒下文啦,這段時間我偶爾會更新一下,也有一些人有持續使用 只是說他動到的範圍太大,怕會影響跟 illumos 之間的流動性所以暫時還沒進去 這段 code illumos 也正在 porting 回去,所以應該可見的未來會進去吧... 話說你不是 maintainer 嗎? Maintainer 的等級不是比較高嗎?

12/03 00:47, , 15F
這種才是真正的kernel developer啊..XD
12/03 00:47, 15F

12/03 09:46, , 16F
推強者!
12/03 09:46, 16F

12/03 10:32, , 17F
朝聖!
12/03 10:32, 17F

12/03 12:50, , 18F
12/03 12:50, 18F
※ 編輯: tuxoko (50.135.204.227), 12/03/2015 13:49:40

12/03 16:18, , 19F
Linux kernel神人才懂 尤其那組語絕對不會是一行一行跑
12/03 16:18, 19F

12/03 16:20, , 20F
各種不同CPU平台 各種硬體 各種memory barrier最佳化...
12/03 16:20, 20F
文章代碼(AID): #1MNhoKnR (Soft_Job)
文章代碼(AID): #1MNhoKnR (Soft_Job)