GPL版陈首席

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




古之学者必有师。师者,所以传道、受业、解惑也。人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。生乎吾前,其闻道也固先乎吾,吾从而师之;生乎吾后,其闻道也亦先乎吾,吾从而师之。吾师道也,夫庸知其年之先后生于吾乎?是故无贵无贱,无长无少,道之所存,师之所存也。

嗟乎!师道之不传也久矣!欲人之无惑也难矣!古之圣人,其出人也远矣,犹且从师而问焉;今之众人,其下圣人也亦远矣,而耻学于师。是故圣益圣,愚益愚;圣人之所以为圣,愚人之所以为愚,其皆出于此乎!爱其子,择师而教之,于其身也,则耻师焉,惑矣!彼童子之师,授之书而习其句读(dòu)者,非吾所谓传其道解其惑者也。句读之不知,惑之不解,或师焉,或不(fǒu)焉,小学而大遗,吾未见其明也。巫医、乐师、百工之人,不耻相师;士大夫之族,曰师曰弟子云者,则群聚而笑之。问之,则曰:“彼与彼年相若也,道相似也。位卑则足羞,官盛则近谀。”呜呼!师道之不复可知矣!巫医、乐师、百工之人,君子不齿。今其智乃反不能及,其可怪也欤!

圣人无常师。孔子师郯(tán)子、苌(cháng)弘、师襄、老聃。郯子之徒,其贤不及孔子。孔子曰:“三人行,则必有我师。”是故弟子不必不如师,师不必贤于弟子。闻道有先后,术业有专攻,如是而已。

李氏子蟠(pán),年十七,好古文,六艺经传(zhuàn),皆通习之,不拘于时,学于余。余嘉其能行古道,作《师说》以贻(yí)之。

今天,我的 Mphil (master by research) thesis 终于评审完了。上来 tektalk 写一篇感谢我的老师,陈首席的文章。感慨万千,不知如何下笔。 copy 一份 《师说》顶置。 05 年,我还是一个大一 freshman,一个月黑风高之夜,在学校网吧 (学校不让大一学生上网,傻逼学校),误入 CLF  (www.linuxforum.net)。当时就傻眼了,什么 V 总啊,茶总啊,轮总啊,斯基啊。开始把 CLF 翻个地(注意儿化音)掉。 BNN 的帖子总是直指人心。鼓起勇气给偶像发个信求教一下,没想到,居然收到了回信。

“Sorry for the late reply.  I think having a good understanding of computer arch, networking, os, compiler and data structure would be a good start.  Since you are even a fresh man yet, please focus on your course study including those math, physics and computer basics.  Step by step, have patience; Then you will reach your goal eventually.

Best regards,
Huailin”

当你啥都不懂的时候,偶像的一句话是会改变人的一生的。首席的几句话改变了我的一生。

* 忘掉细节,牢牢把握基本概念。

*Computer system 远大于一个 kernel, computer architecture 是 computer system 的核心。

*量化一个系统。

虽然不懂这些话是什么意思,但是牢牢的记住了。

受首席当年在CLF介绍 Xen 和 L4的影响,我有机会在大四的时候去 ERTOS/UNSW ( http://ertos.nicta.com.au/) 作和 L4 有关的 毕业设计。 直到08年本科毕业后去清华陈渝老师那里打杂。首席这个时候已经创办了 tektalk,  我记得是在我评论了一个关于QNX的文章后,首席在 google talk 上加了我。当时激动的几乎晕倒。 想象一下,如果你喜欢打控卫,相当于 斯托克顿 过来跟你打个招呼。

后来我来到了堪培拉村,开始在 ANU 读 Mphil (Master by research). 首席时不时的会指点我两下。字字珠玑。我的 master thesis 的工作离不开首席的鼓励。

09 年的 9 月 1 号,我和首席的一段聊天记录

me: BCORE 我准备动态的 用 write_to_memory 替换 一般的 write
因为一般的write需要 write_allocated
BNN: 你要bypass cache?
me: 恩
BNN: 原因为何?
13:46
I mean, what criteria then for your algorithm?
me: write to cache 需要 1)snooping 得到回复(need waite)
1)需要 allocated cache line
13:47
2)modify it
3)如果连续写的空间很大,又要把以前的modified line 写回去
2 double transactions on links
如果 directly write,
13:48
需要 invilidate cache ilne
和 write back to memory
13:49
BNN: 你的case可以在如下数据访问pattern下解释的过去:
Write without Read.
:写完之后,不会立刻做读操作。
me: 恩
BNN: 否则,代价很大。
me: cache locality 非常不好的情况下
和 不以来这些写顺序的情况下
13:50
BNN: yeah
me: X86的memory consistency对这个write combing 可以 reorder
BNN: 所以,你的算法要与编译结合起来了。
me: 恩
detect
BNN: 这样才能做出漂亮的优化!
最早想去作 compiler 的优化,但是一些商用的 compiler 已经实现了这个功能。后来由于发现 managed language applications 初始化 objects 的开销很大,把这个优化做到了 JVM 里,写了一篇 paper 投到 OOPSLA,然后根据这个 paper 写了我的 thesis.
我的 thesis 讨论了一个非常非常简单的东西:初始化内存。 Managed languages 一般要求创建的 objects 必须是初始化好的 (清 0)。 我们发现这个 清0 开销是很大.

目前的优化一般是想要提高 temporal-locality: 把 清0 留到 创建 objects 的时候来作 (hot-path zeroing)。我们反其道而行之,提出了用 non-temporal instruction 来作,这样
1)充分利用 memory bandwidth, 加速 zeroing.
2)bypass cache, 不污染 cache.
3) 可以并行初始化。

在没有量化分析的基础上,我们提出的方案明显是违背直觉的。某 JVM developer 亲口跟我说 我的方法 make no sense. 我觉得这个 thesis 突出了几个点:

1)优化永远是在量化的基础上来作。
2)Multicore 时代,怎么提高 utilization of shared memory subsystems 是关键。
在thesis, 我写到
I also would like to thank my shifu, Huailin, who has been teaching me the
architecture of computer systems, and sharing his system-design experiences in the
last few years.”
首席不止影响了我一个人,希望这些影响是GPL的:受到影响的同学继续帮助身边其他的人,这也许就是 education 吧。
(5个打分, 平均:3.00 / 5)

雁过留声

“GPL版陈首席”有14个回复

  1. 陈怀临 于 2011-06-06 7:59 下午

    时间多快呀。。。都是6年前的事情了。。。那时我还很年轻呀。。。

    真谢谢你,还保存着当年的email。。。

  2. aa 于 2011-06-06 8:08 下午

    首席的tektalk.org又被和谐了。

  3. tom.lai 于 2011-06-07 7:00 下午

    多么经典:

    * 忘掉细节,牢牢把握基本概念。
    *Computer system 远大于一个kernel,computer architecture 是 computer system 的核心。
    *量化一个系统。

  4. 张俊杰 于 2011-06-07 7:42 下午

    同在堪村的彎曲讀者發來賀電。

  5. Panabit 于 2011-06-07 7:59 下午

    支持首席!我映像最深的一句话是“搞工程的应该多花精力寻找次优,而不是最优方案”。

  6. zhangcl 于 2011-06-07 8:01 下午

    来弯曲时间不长,但是确实首席功底在那。不过更希望看到有不少批评首席的声音出现。毕竟,首席也是一个人,是人就有自己的局限性。

  7. Chief Worker 于 2011-06-07 9:03 下午

    估计能和首席论剑的,屈指可数: Tony Lee, Bill Lynch…

  8. shuyong 于 2011-06-07 9:09 下午

    是故弟子不必不如师,师不必贤于弟子。闻道有先后,术业有专攻,如是而已。

  9. 理客 于 2011-06-07 10:28 下午

    做好技术真的是需要这样抠门的,这是另外一种苦或者乐,因为数学基本是zeroing了,也许我的智商不再做具体研发设计也是一种幸运,虽然再做也敢说能做好,但看首席及其弟子,则明显没有自信了
    说实话是人生的最高境界,虽然要付出很多,也很少人说那么多实话,韩愈确是大家。

  10. xux 于 2011-06-07 11:54 下午

    受教了 工作三年正在了解mips architecture的路过,希望不会太晚。

  11. symantec 于 2011-06-08 5:05 上午

    首席要成为教父了。

  12. ccc 于 2011-06-08 6:32 上午

    这个坛子里面都很认可首席的技术,Bill Lynch的资料都很容易搜索到,但首席的资料不容易搜索到。到底有什么本事也赛一下撒?希望首席能比肩Bill Lynch,至少也别差太多。首席的经历和系统软件贡献在坛子里是最神秘的。一般人不小的

  13. 核撼叁 于 2011-06-08 2:56 下午

    老大有空,把编程之道再跟大家走一遍吧:)
    http://livecn.huasing.org/tao_of_programming.htm

  14. 老头客 于 2011-06-08 5:11 下午

    大有个人崇拜的迹象, 打击一下