Linux宝库名人轶事栏目 | 笨叔与Linux的那些事(下)
点击上方蓝字“Linux宝库”共同关注!
跳槽和继续学习
我第一份工作的薪水是一个月1700元,在2004年的应届毕业生大军中也是垫底(中下)的水平,那些985毕业的第一份薪水至少也有5000~6000吧。耐不住寂寞的我和其他年轻人一样,选择了跳槽。虽然我离开第一家公司的时候,薪水已经涨到了5000了,可是依然向往“外面的世界”。庆幸的是,后面的几次跳槽都是和Linux相关的工作,比如做Linux驱动开发等,所以在Linux这条道路上没有偏离太远。
Linux技术的提高需要有实际项目的锻炼。后来我在其他公司做了不少驱动开发的项目,比如数据采集卡,在新的ARM芯片上做Linux内核移植等。数据采集卡,我是从V4L1做到V4L2,对V4L这个框架比较熟悉,此外也让我对内存管理有更深的理解,比如V4L2里面支持4种内存分配方式,即physical memory、vmalloc virtual memory、user memory、scatter-gatter memory,另外还对mmap系统调用和buffer管理有了深入的认识。让我印象最深的一次是,当时看videobuf代码时,想不明白scatter-gatter的内存是怎么分配出来的。
真正帮我对内存管理有更加深入理解的是夏耐老师。他当时正在做一个叫做UKSM的项目,是基于红帽做的KSM项目一个优化版本。要真正理解代码还是需要有实践的机会,即手工修改内核代码,亲自参与调试。内存管理模块相互交错,各种数据结构和算法思想碰撞,若是光看代码,估计很难深入理解其中的奥妙。不妨找一个自己感兴趣的小方向,比如页面回收、KSM、页面分配等,尝试修改代码来实现自己的想法。
夏老师写的一篇关于UKSM的论文在2018年2月入选了FAST会议(FAST 2018 : USENIX Conference on File and Storage Technologies)。FAST会议是计算机领域Top 5的*会议了,在这里恭喜夏老师,十年磨一剑,也感谢夏老师对我的无私帮助。 夏老师的论文是:UKSM: Swift Memory Deduplication via Hierarchical and Adaptive Memory Region Distilling。
关于跳槽,我也很疑惑,我身边就有在一家公司工作了10几20年的朋友。比如我第一家公司里就有这样的同事,从来没有离开过,后来发展比我们棒太多,也成为了公司的中流砥柱和领导。所以,要不要为了眼前的一点点蝇头小利而选择跳槽呢?这事情可能大家要听从自己内心的选择了,和买股票一样,每个人都想成为巴菲特一样的神人,持有一家公司股票到永远。关键还是要有洞察商业的眼光,也许我们都不具备,那就一切随缘吧!
我的奔跑吧
很多人一直疑惑,为何我要写一本这么娱乐性质的书《奔跑吧》?
到了2013年,我到了某一家芯片公司的手机部门,从原来研发部门转换到FAE客服部门。虽然是客服部门,但是对技术的要求依然没有降低,因为需要把研发的客户服务好。客户的产品大部分是基于Android系统,而Android系统又是基于Linux内核。我们常常会被客户问的问题搞晕,比如说,请问你们家芯片是怎么支持多核CPU调度的?怎么支持大小核调度的?这个问题看似简单的几个字,但是要回答起来却不容易,有一种被吊打的感觉,估计只有CFS scheduler的Maintainer Peter Zijlstra才能很完美地回答这个问题,你觉得呢?要回答这个问题,需要知道CFS调度器怎么工作,CPU负载是怎么计算的,SMP负载均衡还有大小核调度EAS调度器哇。需要了解这么多东西,因此回去之后只能啃代码恶补了。
再比如,有一次客户问,你们家芯片在内存管理方面做了哪些优化?一听就懵了,你要说没有吧,一定被人鄙视;你说有吧,当时还真不知道,而且内存管理这么复杂的模块,谁能完整啃下来呢?
还有一次,我把研发做的patch给了客户,客户要求每一行解释一下,我当时就晕菜了。当我正在一行行解释的时候,蹦出来一个rcu_read_lock(),客户问这里为什么要rcu_read_lock(),给我解释一下RCU怎么工作的?我当场晕菜,只能说这是研发写的patch,我真心不懂。
经历了很多次被高水平的客户吊打,我觉得真心有必要总结一下,把一些有意思的问题归纳总结。虽然当时已经使用3.x的内核,可是我还常常去翻阅毛老师的《情景分析》,一本讲述Linux 2.4内核的书。突然我冒出一个可怕的想法,毛老师的书是2001年出版,为何十几年了没有人去更新呢,而且国外也没有3.X内核的书?国内有很多公司对内核有很深入的研究,比如说富士通,英特尔OTC,阿里等,这么多大牛为何没有人愿意更新一本最新版本的《情景分析》呢?难道上天冥冥中是在等我这个FAE来干吗?哈哈~~
我把我这个想法告诉了猫王(Eric Xiao,KVM社区核心开发人员),猫王很支持我的想法,他说国内搞Linux的朋友的确需要一本最新版本的《情景分析》。从那以后,我就开始琢磨这个事情。万事开头难,我从收集内存管理有趣的问题开始。写书的确是一件特别累的事情,而且有不少代码还需要仔细推敲。虽然有些代码以前也阅读过,可是很多时候是囫囵吞枣。大概写了几十页的时候,我发现我写不下去了,太累了,是一种身体和心神的折磨。其他人周末都出去happy,我一个人还在家蒙头撸代码和写word,这种滋味也许只有写过书的人才知道。这时我只能放着Beyond的歌给自己加油鼓劲。
一开始书的名字起得比较土,叫做《Linux内核发现之旅》。因为当时已经在坚持每天跑步5公里,为何不叫《奔跑吧Linux内核》呢?坚持每天奔跑5公里是一种坚持,坚持每天写一点段子何尝不是一种坚持呢?于是我把书名改成《奔跑吧Linux内核》。可能有的朋友觉得看书名会觉得这是一本娱乐的书,其实是我坚持的写照。正好遇到谭校长要来上海开演唱会,一个快70岁的人为了理想还能坚持,为何比他年轻一半的我却不能坚持呢?
开始我根据《奔跑吧》的书名给自己起了笔名叫“奔叔叔”,后来一想,笨叔叔也许更适合我。因为我从2004年毕业到现在,虽然一直工作都和Linux内核相关,由于能力和工作性质的原因(一直在产品研发部门和客服部门工作),我在Linux内核社区一个patch都没有,以致被开源部门的人嘲笑。因此我干脆就叫笨叔叔吧,而且也不想把自己包装成专家,类似电视广告中卖药的各种专家头衔,就以FAE见人了,这样可以真诚和坦然地面对《奔跑吧》的读者朋友。我可以坦然地面对读者的各种吊打和嘲笑,这是对《奔跑吧Linux内核》最好的feedback,可以鞭策笨叔叔在以后的版本中做得更好。
继续奔跑
如哥哥歌里唱:一追再追,只想追赶生命里,一分一秒!
Linux是我们爱好者生命中的一个寄托,伴随着我们成长和老去。当我们退休了,看着孙子们在电脑里安装国产的Linux操作系统,我们满满是回忆......
那些年,我们玩过的Linux......
关于作者:
本文作者笨叔叔,千万Linux爱好者中最普通的一位,上海紫竹某小芯片公司的小FAE一枚。人生目标:每日坚持奔跑5公里。
关于“Linux宝库”微信公众号:
欢迎关注"Linux宝库"微信公众号,这里每天发布最新的开源人物和开源事件。谨以此号记录Linux和开源业界的点点滴滴,为开源爱好者和从业者点亮人生。
- 责任编辑:笨叔叔 -
- FIN -
Linux宝库
长按扫码,关注我们
为开源爱好者和从业者点亮人生!