`
yanghuidang
  • 浏览: 912514 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

FreeBSD committer 徐逸锋先生访谈

阅读更多
FreeBSD committer 徐逸锋先生访谈

    来自:www.freebsdchina.org
    发表: delphij
    时间: 2004/01/23 21:55:14

    -----------------------------------------------------------------------
    FreeBSDChina社区最近采访了徐逸锋(David XU),一位来自中国大陆的FreeBSD src committer。徐逸锋先生在FreeBSD KSE项目中做出了相当多的贡献,在这次访谈中,他谈到了关于自己参加FreeBSD开发的一些经历、KSE、SMPng以及关于FreeBSD的一些其他事情。我们非常感谢徐先生接受我们的采访,也希望这次访谈能够帮助大家进一步了解FreeBSD。
    -----------------------------------------------------------------------

    李鑫(以下简称“李”):可否请简要介绍一下关于您的一些基本情况?

    徐逸锋(以下简称“徐”):我是浙江绍兴人,现年35岁,大学毕业后工作过好几个地方,现住在杭州,已婚。

    李:是什么促使您参与到FreeBSD的开发中的呢?

    徐:我在成为FreeBSD src committer以前,一直在使用FreeBSD, 并且对FreeBSD的POSIX thread(PThread)支持不满意,一直希望有一个性能更好的PThread支持,在2002年,我有幸与Julian Elischer在将FreeBSD内核线程化上做了大量的交流工作,Julian Elischer非常友好地帮助我成为src committer.

    李:您是在2002年9月成为FreeBSD src committer的,此后,您在FreeBSD Project中的主要工作几乎都与KSE有关。除了KSE之外,您还对那些技术比较感兴趣呢?

    徐:我目前全部工作集中在KSE项目上,主要是因为这个项目还没有完成,复杂度比原来设想的要大,而且Julian Elischer由于家庭原因,化在这个项目上的时间减少,现在主要是Daniel Eischen和我在做这个项目,我想这个项目完成后,也需要休息一段时间。可能与我工作性质有关,我将会对FreeBSD支持嵌入式系统感兴趣。

    李:可能也是困扰许多开放源代码软件开发的问题,您开发 FreeBSD 的时间从哪里来? 您所在的公司对您参加FreeBSD的开发是否支持? 您是如何解决生存问题的?

    徐:我白天上班也没有什么时间,可以自由支配的时间集中在晚上和星期天。公司并不知道我是FreeBSD的一员,我所从事的FreeBSD上的开发是出于爱好,与实际工作无关,但是我会用FreeBSD做项目小组中的CVS/WEB/FILE服务器。目前公司给我的工资可让我生存。

    李:在国外的(特别是从事驱动程序的那些) FreeBSD 开发者,经常能够得到一些来自硬件厂商的硬件捐赠,您对这些捐赠的看法如何?您是否需要类似的捐赠?

    徐:捐赠是必要的,因为开发者不可能拥有不同的平台和各种硬件,个人去买各种各样的硬件来搞开发也是不太现实的,捐赠有利于一些硬件尽早更好地被 FreeBSD支持。我当初为了完成KSE的SMP测试,确实希望得到装有SMP的机器,国外也有人想捐赠,但是后来都因为运费太贵而放弃,后来自己买了个双P3的主板解决。一个心愿是将来拥有一台Athlon 64的机器做64位开发。:-)

    李:除了调度器和线程库 (libthr & libkse) 之外,KSE还涉及到系统的哪些部分? 相对Jason Evans的《Kernel-Scheduled Entities for FreeBSD》而言,现在的KSE有什么概念上的重大变化吗?

    徐:KSE基本上是属于调度器这一层的,与其他的部分无关,目前的KSE项目基本上准守了Jason Evans当时的想法,当然也有一些差别,主要是对调度器在SA上的支持与当时的想法有点不同,现在对于SA的支持已经做到与调度器相对独立,而不是当时想象的那么紧密联系在一起。

    李:KSE同Solaris LWP的主要区别是什么? 采用 Scheduler Activation 概念之后,内核通过向 UTS 提供更加准确的调度信息,是否需要用户修改自己的程序才能够发挥其作用? 或者,用户只需要简单地连接一个支持KSE的线程库就可以了?

    徐:FreeBSD内核现在已经是线程化的,同时也有提供兼容Linux的clone进程的LWP, 但是这部分不是FreeBSD的主要部分。FreeBSD主要使用了自己的线程模型,一个进程可以拥有多个内核线程,而LWP本质上是一个退化的进程,但是终究还是进程。内核提供的Scheduler Activation的接口并不是为用户直接使用的,要直接使用它也不是易事,用户最好还是通过libkse来使用, libkse提供Pthread的调用接口,实现了libc_r的所有功能,而其性能超越libc_r,并引入了新的PThread特性, 例如libkse支持PThread的Process Scope和System Scope概念, 用户可以继续保持他的源代码不修改就可以直接连接libkse, 但是也可以考虑使用新引进的特性。

    李:KSE线程库同 Linux 上的 NPTL 实现有什么显著的差异吗?如果有,这些差异对开发者或用户是否会有很大的影响?

    徐:我不是十分了解NPTL,但是KSE是想要支持PThread里面的一些概念, 例如基于静态优先级的调度,SCHED_RR, SCHED_FIFO, Priority Mutex, Process scope和System scope,POSIX thread对于线程的调度要求与传统的UNIX的动态优先级调度算法是不同的, 而这些特性要加到内核里面去实现是很难做到的,KSE的开发者倾向于把这些特性在用户模式的库中加以实现, 很多功能原来libc_r里面就有的,而其他的操作系统可能不具备这种功能,我们也不想丢掉。用户在使用libkse库时,最好对PThread有充分的认识,在改变线程优先级上应当小心, 在libkse中,改变线程优先级别确实会产生一些效果,这一点也是从libc_r上继承过来的。

    李:使用 ULE 调度器是否会对使用了KSE的应用程序的性能产生比较大的改善?

    徐:ULE的主要优点是较好地支持SMP,自动支持CPU affinity, 也就是尽量让一个线程保持在某个CPU上执行以提高CPU Cache的命中率,由此带来系统性能提升, 这种优化对每个程序或多或少都有好处,对于那些主要化时间在CPU上的进程效果最好。如果是单个CPU的系统,效果不会比44BSD有较大的优点。

    李:FreeBSD 5.3-RELEASE计划将ULE调度器和KSE线程库作为操作系统的默认配置,您认为这样做是否已经时机成熟?在此之前,您认为还需要完成一些什么样的工作?

    徐:时机基本成熟,目前主要的任务是让ports系统能够顺利的连接libkse或libthr和libc_r,任由用户选择, 还有就是完成gdb对libkse的调试支持。

    李:对于开发人员来说,便于使用的调试器无疑会帮助他们达到事半功倍的效果,而对于一个使用线程的程序来说更是如此。您可否推荐一些与KSE有关的调试工具或调试技巧?

    徐:libkse的调试支持将会被加到gdb中,gdb已经有很好的对线程的调试支持,libkse并不需要除gdb以外的调试工具。我本人不太使用调试器,主要是不想依赖它,对我来说最有用的就是assert和printf.

    李:对于运行Apache2 (worker MPM)、MySQL 4.x、PHP 4.x的服务器,您认为使用哪组KSE线程库更好?

    徐:我认为目前libkse最好,以后libkse或libthr哪个更好很难说,相互都会有一些对方不具备的优点, 最终结果是我们将会有一个更好的系统。

    李:NetBSD 的 Scheduler Activation 实现和 FreeBSD KSE有什么主要区别?

    徐:NetBSD的Scheduler Activation基本上是基于LWP的,而KSE不是。

    李:SMPng使用了大量的细锁来取代全内核范围内的Giant锁,在提高性能的同时,这也增加了代码的复杂性和验证它们正确性的难度。您认为是否有更好的办法来解决内核的MP-同步问题?

    徐:我认为目前内核WITNESS死锁监测系统还是很有效的,可以监测大部分的死锁情况,目前唯一的缺陷是对传统的lockmgr锁还不支持,而这个锁用在文件系统上比较多,我同时认为支持SMP的OS的正确性是很难做到的,其中一个问题就是race condition,很难发现, 没有很好的方法来检测这种问题。

    李:您认为在 5-STABLE 和 5/6 branching 之后,SMPng的架构是否还会发生重大的变化?

    徐:基本框架不会改变,但是各个子系统的优化还是有可能的,例如TCP/IP的SMP化,中断处理子系统的改进等。

    李:是否可以介绍一些调试SMP内核的经验?

    徐:关于调试SMP内核,其实除了调度器和支持SMP的机器相关的低级代码,其他部分基本上不关心SMP,大部分程序只需关心并发性存取上的控制就可以了,使用锁并且保持数据结构不被并发存取损坏, 避免race condition, 避免死锁等等, 最有效的还是KASSERT, printf :-)

    李:您从事FreeBSD开发使用的主要工具是什么?

    徐:vim, gcc.

    李:除了FreeBSD之外,您是否还使用其它的操作系统? 您是否也参与其它(开放源代码)操作系统的开发?

    徐:我还使用Windows, Linux,都是因为工作需要。除了FreeBSD, 我没有参加其他开放源代码项目。

    李:如果可能的话,您最希望 FreeBSD 的哪一部分出现“突破性的”进展?

    徐:我觉OS发展到现在,技术已经很成熟,不象前几十年在OS上有重大的概念性突破。目前我觉的TCP/IP多线程化是主要的任务。

    李:您可否为希望了解 FreeBSD 内核的人推荐一些参考资料? 另外,您认为在开始真正的 Kernel Hacking 之前,他们需要有哪些准备?

    徐:读Marshall Kirk Mckusick的《4.4BSD 的操作系统的设计与实现》。当然如果你想对系统刨根问底的话,可以读些硬件资料:

    IA32 Intel Architecture Software Developers Manual, 共三卷。
    INTEL MultiProcesor Specification version 1.4 PCI Local Bus Specification 2.3 Plug and Play ISA Specification
    8259 中断控制器手册
    ...

    李:除了 FreeBSD 的开发之外,您平时主要做一些什么工作? 您有没有其它方面的爱好?

    徐:工作上,我是IT的一员, 从事各种软件开发,从设计到编码,还负责项目组人员管理,什么活都做。平时也会去逛逛书店,到风景区玩,大部分时间会在家里和我的儿子玩。

    李:作为一个 FreeBSD 的开发者,您希望对用户说什么?

    徐:坚持使用,一开始可能很难用,但是常用的也就那么点东西,熟悉了就不难了。

    李:非常感谢您能够抽出宝贵的时间来接受我们的采访 :-) 祝您猴年大吉!另外,在此也感谢您长期以来对FreeBSD所作的巨大贡献。

    徐:谢谢你们对我的关心,祝FreeBSD China Community越办越好,吸引更多用户加入,团结互助共同推动FreeBSD在中国的应用,最后祝大家身体健康,工作顺利,猴年吉祥。
分享到:
评论

相关推荐

    FreeBSD 7.2中文手册

    本手册适用于安装 FreeBSD 6.4-RELEASE 和 FreeBSD 7.2-RELEASE 以及它们的日常使用。 这个手册目前由很多人 持续地 维护。其中的内容需要不断地更新。 如果您有兴趣参加这个项目,请发邮件到 FreeBSD 文档计划邮件...

    FreeBSD6.0架设管理与应用(王俊斌主编)

    本资料是由著名的王俊斌先生把他使用FreeBSD Linux系统及从事Linux程序开发的宝贵经验编成一部资料,以提供给初学者使用。 对于初学者而言,学习新的操作系统一定会遇到很多问题。但当这些困难获得解决时,就是一...

    FreeBSD的安装过程

    FreeBSD是一种类UNIX操作系统,但不是真正意义上的UNIX操作系统,它是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支,它支持 x86 兼容(包括 Pentium® 和 Athlon™)、amd64 兼容(包括 Opteron™、Athlon...

    FreeBSD网络操作系统视频教程

    教程名称:FreeBSD网络操作系统视频教程课程目录:【】Apachel服务器系列之一(楚广明网络教程之八)【】FreeBSD之Samba服务器(楚广明系列课程之五)【】FreeBSD基本文件配置(楚广明系列之二)【】freebsd安装(楚广明...

    FreeBSD开发手册.7z

    欢迎您阅读《FreeBSD开发手册》。 这本手册还在不断由许多人继续书写。 许多章节还是空白,有的章节亟待更新。如果您对这个项目感兴趣并愿意有所贡献,请发信给 FreeBSD 文档计划邮件列表。  本文档的最新英文原始...

    FreeBSD10.0源码

    FreeBSD10.0内核源码 64位 安装ISO镜像文件后提取usr/src/sys 也可以自己到freebsd网站上下载ISO http://www.freebsd.org/where.html

    FREEBSD操作系统设计与实现.pdf

    第一部分包括前3章,是对FreeBSD历史、设计和内核服务的综述性介绍。第二部分包括第4章和第5章,分别论述了进程管理和存储管理。第三部分第6章到第10章,详细介绍了I/O系统,包括概述、设备、本地文件系统、网络文件...

    安装freebsd install freebsd

    比较全的freebsd安装,过程细致,不容易出错

    FreeBSD系统编程.doc

    FreeBSD系统编程

    FREEBSD 文件系统 文件浏览工具

    FREEBSD 文件系统 文件浏览工具 用于读取FREEBSD 系统的原生磁盘分区格式UFS 格式的 文件读取

    VMWARE下安装FreeBSD

    freebsd7.0

    FreeBSD手册FreeBSD Handbook

    涵盖了FreeBSD 4.6-RELEASE的安装和日常使用。

    FreeBSD 13.2.zip

    网盘文件永久链接 CHECKSUM.SHA256-FreeBSD-13 FreeBSD-13.2-RELEASE-amd64-disc1 FreeBSD-13.2-RELEASE-amd64-dvd1

    FreeBSD和Linux到底有什么不同

    FreeBSD和Linux到底有什么不同

    FreeBSD常用命令110条

    FreeBSD常用命令110条FreeBSD常用命令110条FreeBSD常用命令110条

    Absolute.FreeBSD.3rd.Edition.2018.pdf

    The critically-acclaimed FreeBSD guide, now expanded, revised, and updated! FreeBSD is the muscle behind companies from Netflix to EMC. Any place where someone does heavy lifting on the Internet, you...

    用最小化方式安装FreeBSD教程.zip

    本次为您提供的是用最小化方式安装FreeBSD教程,FreeBSD是一种类UNIX操作系统,是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支。FreeBSD 为不同架构的计算机系统提供了不同程度的支持。

    freeBSD系统结构手册

    freeBSD系统结构手册,The FreeBSD Documentation Project,是FreeBSD 中文计划

    freebsd集群技术探析

    freebsd集群技术探析

    freebsd中文使用手册

    freebsd 中文使用手册freebsd 中文使用手册freebsd 中文使用手册freebsd 中文使用手册

Global site tag (gtag.js) - Google Analytics