`
yanghuidang
  • 浏览: 950522 次
  • 性别: 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 8.4安装指南

    FreeBSD 8.4是FreeBSD操作系统的一个稳定版本,它基于FreeBSD的开源Unix-like系统,以其稳定性、安全性和灵活性而著称。本指南将详细阐述FreeBSD 8.4的安装过程,以及如何在安装完成后部署Panabit网络管理软件。 一...

    freebsd.tar.gz_BSD_FreeBSD内核源码_freebsd source_freebsd.tar_linux

    **FreeBSD内核源码详解** FreeBSD是一个开源的类UNIX操作系统,以其高效、稳定和强大的网络性能而闻名。在给定的`freebsd.tar.gz`压缩包中,包含的是FreeBSD v4.4版本的内核源码,这对于那些对操作系统底层原理、...

    FreeBSD中文手册.pdf

    FreeBSD 是一个开源的类Unix操作系统,源自Berkeley Software Distribution(BSD)系统。这份"FreeBSD中文手册"是针对FreeBSD系统用户和管理员的一份详细参考资料,旨在帮助读者理解和掌握FreeBSD的操作、安装和日常...

    FreeBSD服务器安装步骤

    FreeBSD服务器安装步骤 在本文中,我们将指导您一步步安装 FreeBSD 服务器,从下载 FreeBSD 的 ISO 镜像文件到安装后的配置。FreeBSD 是一个免费的、自由的操作系统,具有许多非凡的特性,例如抢占式多任务、多用户...

    FreeBSD 13.2.zip

    **FreeBSD 13.2 系统详解** FreeBSD 是一个开源的类UNIX操作系统,源自Berkeley Software Distribution (BSD)。它以其稳定性和安全性著称,被广泛应用于服务器环境,同时也是开发网络软件和嵌入式设备的理想选择。...

    FreeBSD 中文使用手册

    根据提供的信息,我们可以总结并详细解释FreeBSD中文使用手册中的关键知识点。 ### 1. FreeBSD 文档项目(The FreeBSD Documentation Project) FreeBSD文档项目是一个旨在为FreeBSD用户提供全面、准确的技术文档...

    freeBSD架构中文手册

    FreeBSD是一种开源、类UNIX的操作系统,以其稳定性和性能而闻名。这份“freeBSD架构中文手册”是针对FreeBSD系统架构的详细指南,适合初学者和有经验的系统管理员使用。手册共200多页,深入浅出地介绍了FreeBSD的...

    FreeBSD操作系统的设计和实现

    FreeBSD是一个高性能的UNIX操作系统,具有高度的可靠性和强大的网络功能。它在学术和商业领域都有广泛的应用,是学习操作系统设计和实现的一个重要平台。《FreeBSD操作系统的设计和实现》这本书详细介绍了FreeBSD的...

    FreeBSD 7.2中文手册

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

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

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

    freebsd10.1最新中文手册

    FreeBSD是一个开源的UNIX操作系统,它由FreeBSD项目管理,并基于加州大学伯克利分校的BSD版本4.4系统进行开发。它为个人计算机、服务器以及嵌入式系统提供了高性能的操作环境。FreeBSD的一个重要特点就是它的稳定性...

    FreeBSD的安装过程

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

    freeBSD系统结构手册

    ### FreeBSD系统结构手册关键知识点解析 #### 一、FreeBSD简介 - **系统定义**:FreeBSD是一款基于Unix的操作系统,其目标在于提供一个稳定、高效且可定制的基础平台,适用于服务器、个人计算机及嵌入式系统等多种...

    FreeBSD和Linux到底有什么不同

    ### FreeBSD与Linux的主要区别 #### 一、设计思想与哲学 FreeBSD与Linux虽然表面上看起来相似,但在设计思想上有着本质的区别。FreeBSD遵循的是更为传统、严谨的Unix设计理念,强调系统的稳定性和安全性,这一点在...

    FREEBSD 文件系统 文件浏览工具

    **FREEBSD 文件系统详解** FREEBSD 是一个基于UNIX的开源操作系统,其强大的稳定性和灵活性吸引了大量的开发者和用户。在FREEBSD系统中,文件系统扮演着至关重要的角色,它负责组织和管理存储设备上的数据,包括...

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

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

    FreeBSD中文使用手册

    FreeBSD是一种运行在x86、x86_64、ARM架构计算机上的类Unix操作系统。它基于加州大学伯克利分校开发的Unix版本BSD,BSD是“伯克利软件套件”的缩写。FreeBSD具有非常高的性能和稳定性,被广泛应用于网络服务器和个人...

Global site tag (gtag.js) - Google Analytics