作者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/cn.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