FreeBSD committer 徐逸鋒先生訪談 |
|
conundrum
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
http://www.heblinux.org/view.php?skin=art&ID=3600 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在中國的應用,最後祝大家身體健康,工作順利,猴年吉祥。
發佈人:oracle 來自:www.freebsdchina.org
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |