: Intel和AMD在他们的CPU上提供了性能计数寄存器,可以用来对有趣的事件计数,比如缓冲流水线满(cache line fills)。oprofile使用这些计数器来反映究竟系统中的那些例程影响最大。基于它的设计,这包括了系统上的所有代码:中断处理器,内核模块,内核,各种函数库和程序。 其他的统计器(profiler)关注于系统特定的部分,比如一个单独的程序。这会有对原有的性能优化的效果造成误导的风险。oprofile的非打扰(non-intrusive)设计允许它很容易的运行在产品系统上;得到更准确的数据,否则将仅仅是可能的数据。
Johen Levon: 处理竞争和同步问题(races and concurrency),以及其他很偏的情形问题是很困难的。大概我写到一半的时候,我意识到我的基本方法,在两方面,将永远不会高效,所以我整个重写了代码 在它当做Open Source项目发布后,我开始提交补丁,比如将源码功能加上注释和增加对Athlon的支持。以一种优雅的方式实现一个新功能常常要花一些反复(iterations)
JA: 你指的其他的统计器是什么
Johen Levon: oprifile的基本设计(下面讨论)是从DEC的DCPI得到灵感(在“所有的指令周期去那儿了?”中讨论-Find in Google译者) 其他感兴趣的统计器还有SGI的kernprof,和perfctr,它们都使用了硬件的性能计数器。
JA: oprofile是如何达到更好的性能的
John Levon: oprofile是一个静态统计器-它并不精确的计算事件(这称为“记账(accounting)”),而是通过一个中断产生的周期性取样中得到一个事件分布的大致统计。 中断将取样入口装入一个哈希表来记载("soaks up")样本加载。这会充满一个内核缓冲区,一个用户空间的后台进程会取这些数据并做必要的修正。样本被记录在已经mmap()过的样本缓冲区中。 oprofile依赖于一条经验型的局部引用规则,即应用程序倾向于花费大部分时间运行在一段相邻的区域内,不管是时间上还是空间上。 http://kernelnewbies.org ;) 这里包含了很多有趣的站点,所以它是一个很好的起点。特别是补丁包页面中的列表几乎包含了所有外围内核项目-对于初学者,现存的代码通常是最好的资源
JA: 使用oprofile有多困难
John Levon: 开始很容易,键入oprof_start来运行gui,选择一个事件,开始统计。从命令行得到结果已经完成了,比如,一个带注释的资源树(source tree)可以通过下面的命令产生: op_to_source --source-dir=/src/glibc/ --output-dir=/src/glibc/annotated -i /lib/libc-2.2.so 或者: oprofpp -l ,可以显示一个总结 最后GUI支持事后统计(post-profiling)。
JA: 能谈谈Kernelnewbies吗,它是什么,所有的部分,为什么人们把它作为一个资源来使用
John Levon: Kernelnewbies有三个服务(IRC,mailing list, webpage)但是更重要的是,它是一个正式的由人组成的网络:“新手帮助新手”来学习内核。 这里更欢迎希望学习内核而不仅仅在列表或者频道中问问题。通常问题会被其他新手回答,通常一个真正的内核高手只是提供一些明智的建议,更多的时候,你将自己在讨论找到在一个宽广范围内的关于内核的任何问题的答案 ;) 不用担心加入一个人们正在讨论的问题超出你的想像范围内(over your head)的题目-我经常那么做! 伟大的内核黑客们会偶然的来到IRC频道讨论他们正在做的,看看他们的交互讨论非常有教育意思。 这个网站提供链接,修改记录,faqs和更多的冬冬:当你得到一些大致信息之后,这是一个很有帮助的起点。
JA: 最近谁常去
John Levon: Greg-Koah Hartman, USB 热插拔高手(hotplug guru,一定还有更好的翻译方式,:) Jeff Dike, Mr. 用户空间Linux(后面有介绍) marcelo, phillips, riel, bacchus - 请看 kernelnewbies.org/faq/
JA: 对于学习Linux内核的人来说,kernelnewbies是唯一的资源吗,或者有其他内核的共享信息吗
John Levon: 只有IRC频道会讨论其他的内核,通常你发现关于BSD和Linux的VM(虚拟机还是虚拟内存?)的争论
JA: 你使用其他opensource的软件吗,做开发或者使用
John Levon: vim; 如果没有它(还有grep和sed),日子就会过的像地狱一样。Mozilla确实很棒,当我需要写些什么的时候,我使用(并研究)LyX。
JA: 你试过日志文件系统吗(Journaling filesystem),上星期,我们采访了Keith Owens时谈到了XFS,你用过吗
John Levon:没有,我老早就想试试ext3了,fscks让我很郁闷
JA: 你目前沉迷于任何Linux游戏吗
John Levon:不,但是我又沉迷在我的BBC Master的Elite上了(Elite on my BBC Master,不知何解)
JA:除了LInux,你还使用其他操作体统吗?如果是,他们与Linux相比如何
John Levon:不(nope),从来没有感到那个必要。我看其他系统都是让人头痛的APIs,这就是我的感觉。类UNIX系统都继承了UNIX API,很多部分都因其简单而优美。
JA: 对于当前2.4内核系列你有何感觉,你认为它稳定吗?
John Levon:我认为Linus的代码树有点乱(a bit of mess);我习惯于快速而通常是危险的内核发布版,而这样的版本一般都不是被认为是稳定的系列。对于kernelnewbie们来说,我们推荐Alan Cox系列,因为它更稳定(我们得到的报告说明这一点),而且最近几次的发行版也有很好的性能。(通常稳定性和高性能是矛盾的,译者)
JA: 对于将要到来的2.5内核,你最期望的是什么
John Levon: 我非常希望看到整个Linux可以成为一种专业的音频解决方案(a professional audio solution):它有潜力成为一个杰出的工作室操作系统,但是不管是对内核还是用户空间,它都还有一段很长的路要走(后面将看到,Music简直可以说是John Levon的第二最爱,第一当然是Linux ;),译者)
JA: 你怎样建议Linus将2.4代码树重新引回到稳定性上来
John Levon: 公开2.5(open 2.5)并将2.4系列留给Alan。即使是Linus也承认Alan Cox更适合维护一个稳定的系列。
JA: Alan最近提到他可能将Linus的VM融入到当前的-ac系列中。你认为这是个好主意吗,这会影响稳定性吗
John Levon: 我认为这很可惜。人们倾向于将Andrea/Linus的VM于原来的Riel的VM做比较,这对Rik和他的代码很不公平;只有最近的Alan内核系列包含了性能修正。Rik的VM是被很好的测试过的,而Linus的那个还没有(目前是)。从阅读内核邮件列表的情况来看,这是很明显的。
JA: 你曾经遇到过Linus,Alan,或者其他内核黑客吗
John Levon: 从来没有;我处在内核社团的非常边缘的地方(fringes of the kernel clique)。不像其他人,我没有看到加入内核开发社团有什么明显障碍。
JA: 你是任何一个本地的Linux用户组成员吗
John Levon:不是,事实上我很懒的,自从那个从事Manchester branch的伙计搬到楼下工作之后 ;)(上google查了一下,这个所谓Manchester branch的冬冬似乎是某种音乐团体,使用一种称为Recorder的古老乐器。译者)
JA:除了计算机外,你还喜欢什么
John Levon: 我沉迷于收集和聆听音乐。事实上这占用了我剩余的其他时间,让我从世俗中解脱出来。你可要小心,否则我可能诱导你和我整个晚上谈论音乐的。
JA: 哦,我准会上当的 ;^),那种类型的音乐,说点题外话……
John Levon: ……(然后他们就谈了整晚的音乐,采访中断……,;)译者)
JA: 有什么网址或者书你要推荐给学习内核的人吗
John Levon: 当然了,
JA: 你能列出一些补丁吗,他们对于那些刚开始学习内核的人来说是最有意思的
John Levon: 提供跟踪功能的IKD (integrated kernel debugger)和LTT(Linux Trace Toolkit)很有意思,值得看看。 如果你想称为一名FS(File System)黑客,那么nullfs也许很适合你(在内核源码中的fs/minix目录下)。 用户模式下的Linux也是一个不错的冬冬(Linux in Linux,在一个虚拟机上运行用户态的linux,该Linux物理上表现为一个大文件,有点像vmware之类的冬冬,译者)。 如果你对Linux进程调度感兴趣的话,那么你会发现Plug-in方式的调度器将非常棒(可以改变Linux调度策略的一种模块化的plug-in,不用重编译内核,也不会影响性能,译者)。 压缩缓冲与合并内存补丁包(compressed cache and mergemem)也值得看看
JA: 不久前我们曾和Robert Love谈起关于他的可抢占式内核补丁包,你曾使用过吗
John: 我不需要它。我认为它是一个很有用的补丁包,不过那实际上是一种权益之计(band-aid)-我宁愿看到内核中的响应问题以通常的方式解决,而不是在所有单处理器的机器上加大spinlock的开销(rather than introducing spinlock overhead on all uniprocessor machines,不知对不对?译者)。那些需要真正的实时系统的人需要一个实时的OS(RTOS)。
JA: 谢谢你!还有什么你要补充的吗
John Levon:对那些想要钻研与内核相关的人,我只提供一个简短的建议:坚持