Robert Love--KernelTrap访谈之一(转)

Robert Love--KernelTrap访谈之一(转)[@more@]

摘要

本周,KernelTrap采访了当前负责维护可抢占内核补丁的Robert Love。他使用Linux已经7年了,为现在的内核作出了很多贡献。他的话,是这一切的最佳描述...(2003-07-11 13:29:15)

By Anlin

JA: 请谈谈您的个人情况...

RL: 我现在是Gainesville佛罗里达大学计算机与数学专业的学生,家乡

在Ft. Lauderdale, FL(note: FL for Florida)。我还没结婚,但

有一个很不错的女朋友。我编程的兴趣在于操作系统和数学/科学计算。

JA: 何时毕业,毕业后有什么计划?

RL: 2004年。但我还是想留在学校里继续读书以获得更高的学位,特别是

经济仍停滞在当前的状况(remains as-is)。

JA: 来自 Ft. Lauderdale, FL.的什么地方?我住在那里的Lauderhill。

RL: 我出生于Pembroke Pines,在那里长大。

JA: 您什么时候开始接触Linux?

RL:

第一次在我的PC上运行Linux是在1994年年末,当时用的是1.0版的内核;

这也是我第一次真实的Unix体验。我的那台PC是386SX(感谢妈妈),在

转而运行Linux之前,它之上运行的操作系统是Windows 95 beta。我在

使用2.0版时进步更大,从2.2版开始则完全转向了Linux,此后一直只使

用Linux。

我转向Linux有一个显而易见的原因: 我相信Linux是一个强大健全有着优

秀应用软件的系统。然而更重要的原因是它使我能对系统以及围绕它的社区

的有充分的接触。

JA: 你可不可以描述一下1.0版内核相比现在的2.4版的几个关键区别?

RL: 如果1.0和2.4有几页代码是相同的,我将会非常惊讶。两者没有任何

相同的地方。

JA: 安装和使用1.0版的内核是什么样的情形,有哪些软件可以使用?

RL: 幸运的是,1994/1995年,Linux发展良好。那时SLS和Slackware

都提供了全功能的发行版。我最初使用Slackware2.0。那时你必须以磁盘

集(disk sets)的形式将Linux安装文件下载到磁盘上,可能你现在仍这么

做。我记得磁盘集A是核心,磁盘集N提供网络支持,等等。那时Linux已经

支持网络了,X也可以使用(XFree86 2.0),也支持很多硬件。

和今天相比,最大的问题是缺少文档,安装又非常复杂。我记得起初我曾因

为没办法让PPP用Linux;如果那时我可以使用PPP的话,我可能早就转向

Linux了。

JA: 您为内核做出的贡献有哪些?

RL: 目前我主要的时间是花在可抢占内核补丁的维护上。这个补丁可以使低

优先级的进程被剥夺,即使它当前处于核心态,结果是改善了系统的响应时间。

这个补丁最初是MontaVista-一个伟大的公司-的杰作,所以我和他们以及这

个社区(Linux社区)的其他成员密切合作。这是一个很有趣的项目。我们正把

目标是将它加入到2.5版的内核中。

我的工作是非常随机的。修正bugs,优化,作一些旨在使系统简洁的清理。我

也写过i815和AMD761 AGP GART的代码,也维护着其他一些的零碎的补丁。

JA: 为了使得内核可抢占,您的补丁对内核作了哪些必要的修改?

RL: 我们的模型是当内核不被锁定时,任何时刻都可被抢占。根据这个设计,

当一个事件激活更高优先级的进程时,系统将会剥夺当前正在运行的进程,转

而运行这个更高优先级的进程。

我们必须修改entry.S中的中断代码来避免某些情况并能在中断处理过程返回

时发生抢占。但是我们不能在临界区内抢占,这和在SMP环境下的临界区中不允

许并发的道理相同,所以我们防止了持有自旋锁(spinlock)时被抢占的情况。

bottom half handler和scheduler同样需要修改,以保证在它们运行时不

发生抢占。

JA: 时至今日,您认为您的补丁的稳定性如何?我的所有工作都在一台独立的

Linux服务器上完成,我不断为它升级内核和软件。改善系统的响应固然有吸引

力,但您有没有考虑过对一台不间断运行的服务器来说,补丁是否足够稳定呢?

RL: 补丁非常稳定。我可以非常有信心地鼓励任何人来使用它。我们有很多用户,

收到了很多反馈。我想我们已去除了明显的漏洞(bugs)。我在自己的主系统中

使用这个补丁。

最重要的是我们知道它的设计和实现是正确的。使用了我们最新的补丁之后,我

感觉我们已解决了所有的问题。

JA: 在您看来,系统响应时间上的改进有多明显呢?

RL: 非常明显。

我们曾经记录过200%的系统延迟方面的提高。安装了可抢占内核补丁后,系统的

平均延迟大约为1ms,不会超过10ms。仍有些长时间的锁占用会影响响应,导致

有些延迟达到100ms甚至更长。幸运的是这些情况只在特定情况下出现,就像切

换虚拟控制台(switching VCs)。

JA: 现在还有另外一个最终目标相同的补丁(由Andrew Morton维护),跟您的

有何不同?

RL: 这两个补丁所针对的问题都是内核是非抢占的。也就是说,处于内核态的任

务会一直运行,直到其运行结束或主动交还控制权。如果用户态事件在内核操作

的时段发生,用户程序必须等待内核完成本次运行。这个等待就导致了系统延迟,

而它(系统延迟)正是我们要去改进的。

Andrew的低延迟补丁在内核的各策略点(note: Andrew认为可能引发长时间延

迟的点)加入了条件调度调用(conditional scheduling calls),这些调度

非常有效地使长时间的内核操作作出让步:"我很乐意让别人先运行。有没有想运

行的任务啊?如果有的话,就先运行吧!"这样拆分了长时间的操作,降低了相应

内核运行点的系统延迟。

抢占式补丁工作机理则很不一样。它修改内核本身以允许核心代码被抢占,所以

上述问题甚至根本不会存在。如果有任务需要运行,它就会运行,系统响应从中

受益(note: 减少了响应时间,改善了系统响应)。

JA: 在最新的lkml 中,您提到有可能将两个补丁组合起来。这是您现在的工作

方向吗?

RL: 这当然是需要考虑的。由于我们不能在系统被锁定时抢占(note: 即使内核

打了可抢占补丁),长时间的锁对系统延迟来说是一个很大的威胁。锁的延时很可

能就成了那段时间系统的延迟。

一种解决方法是像Andrew的补丁所做的那样拆分这些锁。这将成为合并部分他的

补丁到抢占式补丁的目的,或者更现实一些,做一个他的低延迟补丁的抢占式版本。

他的patch中的在内核被锁定时的任何条件调度都可能是有用的(note: 对于改进

我们的patch)。

这个方向(note: 拆分长时间的占用锁)的第一步是标识出长时间被占用的锁,这

正是抢占统计(preempt-stats)补丁所做的。这种方法衡量禁止抢占的时间并报

告导致这个结果的锁。

以上仅仅是针对长时间锁的一种解决方法。

JA: 您所标识的内核的哪些部分会出现这种长时间锁呢?

RL: 控制台层,过去可能出现非常长时间的锁,幸运的是,最近

Andrew Morton修正了很多这方面的问题。Frame buffer的代码会屏蔽中断很

长时间以避免往其输出太多。如果滚屏太多,延迟甚至可能达到500ms。切换虚拟

终端的情况也很糟糕,blkdev_close()会很长时间的占用一个锁。有些模块操作

很耗时。如果VM开始出现颠簸(thrashing),它也会导致很多延迟,因为颠簸时

VM会占用一个锁。VFS也有一些长时间占用的锁。

JA: 将您的补丁加入2.5可能性多大?会有哪些阻碍?

RL: 这完全取决于Linus先生对这个补丁的看法以及其他hacker的意见。Linus

之前曾表示他对这个想法很感兴趣,我希望他的兴趣可以帮着将这个补丁加入内核。

作为一个独立的补丁,我们有很广泛的用户基础,这显然非常有用。我们收到了很

多反馈,包括一些显示这个patch对系统带来巨大的改善的评测。

反对意见是,抢占式内核降低了系统的吞吐量。这是关键点,也是我们需要特别说

明的。现在的多数测试显示了0~5%的吞吐量损失--我想相对于200%的响应提升这

是值得的!另一些测试则显示了系统吞吐量的提升,因为我们更好的排列了系统的处

理流程(thread better)。退一步,对于那些无法接受吞吐损失的系统,抢占式

内核只是一个可选。

JA: 您开发时主要使用哪些工具?请描述一下您的环境、计算机和使用的方法。

RL: 我使用最多的主机是PIII-733(384MB内存+U2W SCSI磁盘)。我也有一台

IBM ThinkPad,还有撒满一地的旧工具(note: 电脑原件)。我运行的是最新的

RedHat Rawhide和Ximian GNOME。

我用vi写代码,因为我不想学其他的OS。:)

我一般在X下工作,因此会打开一些gnome终端和gvim窗口以进行我的工作。我喜

欢到处grep,必要时research,然后开始coding。我几乎不在纸上设计。我经

常依赖于lkml和私人email--还喜欢在别人面前吹嘘自己的想法。

JA: 您还使用什么操作系统?与Linux相比你,喜欢它们什么,不喜欢什么?

RL: 我有一个Windows 2000的工作站,和运行Irix的老的SGI Indy。其他都是

运行Linux的机器。我保留Windows是为了可以运行PowerPoint,以防止

AbiWord不管用的情况。对其他操作系统我最不喜欢的是它们不开放源码。我不是

自由软件的忠实信徒--尽管我赞赏它的优秀--但是开放的源码和它周围的群体都是

无价的。

JA: 您有没有玩过开发源码的BSD操作系统?更具体地说,你有没有具体研究过其

他的内核?

RL: 我曾经有过OpenBSD的计算机,但后来我把它扔到了垃圾站(不是OpenBSD的

原因)。我关于系统的知识停留在理论阶段。我对Matt Dillon在FreeBSD方面的

工作印象很深(他写了包括VM在内的很多部分)。他们的SMPng工作在很好的跟上

(在SMP伸缩性方面,他们不如Linux),他们也在考虑实现抢占式内核。

JA: 您知不知道他们将采用那种形式的抢占?像你的补丁中使用的,或者Andrew的,

或两者的组合中使用吗?

RL: 他们正考虑使用一个完全抢占式的内核,就像我的补丁那样。除了这个方案

被FreeBSD核心团队讨论过之外,我不清楚他们在这方面还做了哪些工作。

JA: 您对当前2.4系列内核的印象如何?您认为它稳定吗?

RL: 从2.2以来,我想我们跨越的距离(note: 内核的改进)是令人惊奇的。2.3中

完成、现在保留在2.4中的工作是令人难以置信的。我们所做的一些改进,尤其是

Linus和Ingo的工作,都是难以置信的。2.4可以工作在非常高性能/高可扩展的

环境之中。

这并不表示我对2.4完全满意了。在这一点上,我认为,去除Rik的VM是一个错误。

如果Linus想在2.5中有新的尝试,就应该尝试所有的途径。然而,在稳定版本中,

我认为我们应该尽可能少作改变。我们不仅仅抛弃了一年多的VM工作,同时也丢弃

了所有相应的文档和理解。尽管如此,VM看起来正在很好地成型。我使用的是

Alan的内核,它采用了Rik的VM,我们正在对它进行改进工作。谁知道如果将2.4

交给Alan,VM将会是什么样子。

JA: 如果突然由您主管内核,您会如何处理这些问题?

RL: 首先,在我的统治下内核将会变成一堆垃圾。不管我如何抱怨,或者他人如何

反对Linus,他不光是一个神奇的hacker,更是一个出色的管理者。Linux需要他。

在VM问题上,我的2.4将跟随Alan的方向。Rik的VM是经过测试并有文档的。我想

我们需要对它进行更完善的测试。太多Rik的好想法和补丁被忽略了。其他不应当

被吸收的补丁却被吸收了。我们需要逐渐吸收VM的工作成果,和吸收与VM没有冲突

的补丁同步进行,测试结果。在Alan的开发树上我们有类似的机制。

对于2.5,当然,任何东西都可以进来。任何东西也可能被去除。我认为Andrea的

VM现在表现得不错。可能它比我认为的更好。但现在才发现它的优点,这不是一个

好的时机。

JA: 对于2.5您看好什么?您期望什么时候开始这方面的工作?

RL: 当然是抢占式的内核。

除此之外,我想继续探索finer-grained locking和overall cleanup。我想

块设备,SCSI层,以及控制台层的重写是有计划的。我们需要考虑NAPI以及其他

形式的IRQ控制。 Ben LaHaise的异步I/O也应该被吸收。Keith的new kbuild

看起来很好。我期待所有这些。

我认为有必要对tty系统进行彻底的重写,但我不知道谁会来做这件事... 至少我

不会。我认为,不会有人,包括Linus,清楚何时2.5问世。我曾经预测在3月份到

5月份之间--像往常那样在2.4.0之后两个月内。既然都快一年了

(2.4在2001年1月4日发布),我更无法猜测。我怀疑当VM稳定了,Alan和Linus

一致的时候,我们会见到2.5.0。但愿不会太久。

JA: 您见过Linus吗?还有Alan,或者其他的Kenerl hackers?

RL: 我没有见过任何著名的hacker。我真希望某一天能见到他们。或许在某个会

议上,或在宠物公园。

JA: 在您除Linux之外的其他时间里,喜欢做些什么?

RL: 除了Linux,学校和女朋友,我喜欢越野骑车,修整我的汽车,看rock演出。

JA: 最近看了哪些精彩的演出? Gainsville出了好多著名的音乐。

RL: 嗯,最近不是很多。Cadillac Blindside两星期前有一场演出,我喜欢他

们。 Jane's Addiction昨晚上演。当然,Less than Jake是当地的,我经常

看这样的演出。它们很棒。

JA: 对那些好学的Kernel hackers,您有什么建议和启示激励他们?

RL: 读源码,玩转源码,逐渐深入。对新手来说,O'Reilly出了一些好书

("Understanding the Linux Kernel" by Bovet and Cesati,

"Linux Device Drivers, 2ed" by Rubini and Corbet都很不错)。

最重要的是读源码。你有整个系统的源码--读、改、学。我几年前在lkml注册,

但在2.3之前我从未作过任何贡献。在lkml潜水是一个很好的方法,可以学到很

多东西。

JA: 非常感谢您花费这么多时间透彻地回答了我的所有问题!由于我们的谈话,我决定

在我的系统上使用你的可抢占内核补丁。

RL: 太好了!告诉我它运行如何,同时也谢谢MontaVista的那些伟大的家伙们。

后记:

在与Robert谈话之后,我下载了他的补丁,作了一个运行测试(应用于2.4.12-ac1)。

哇!性能改进真令人吃惊!VMWare和Mozilla之类曾经在启动和退出时让系统冻结的

应用程序在使用了Robert的补丁后,可以同时启动,并完全保持系统的响应。我还

发现当这些大程序启动时xmms不再"skips"。我将一直使用这个补丁。现在我希望

它能被吸收到2.5的源码中。

译者注:

英文原文自:www.kerneltrap.org

Robert.M.Love在大学三年级的时候,就已经成为了linux kernel的core

hacker之一,拥有了7年使用Linux的经验,不得不让人叹服。

他很谦虚,还很英俊(可以去internet上搜索他的相片:)。

KernelTrap(他的访问以有技术深度而著称) 在2001/2002年各对Robert.M.Love,

分别进行一次访问。2001年的访问(本篇访谈)时,Robert.M.Love所维护的内核

可抢占patch尚未加入2.5中。2002年的访问则是在这个patch加入2.5后进行的。

2002年的访谈翻译工作也将很快开始,请关注。

译者的email:

easyway: huyisui@zju.edu.cn

anlin: book_daemon@yahoo.com.cn

欢迎大家对我们的的翻译工作提出建议。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-938820/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-938820/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值