提升 Linux 開發者的能力(轉)

ba發表於2007-08-12
提升 Linux 開發者的能力(轉)[@more@]在基於 POWER 的系統中開始使用企業版 Linux
級別:中級

64 位 POWER 體系結構是公認的高效能、可靠而且有用的企業平臺,它為 UNIX 和 Linux 應用程式開發者提供了新的選擇。不管是誰,只要有在其他平臺上使用 AIX 或者 Linux 的經驗,就可以受益於與世界頂尖的 IBM 硬體 POWER 相結合的開放原始碼社群強有力的基礎。

從價格適中的 2- 路伺服器到垂直擴充套件的超級計算機再到世界頂級的 JS20 BladeCenter,基於 POWER 的機器具備所有的大小和等級,始終領先於人們對企業級硬體的預期。與動態邏輯分割槽(Dynamic Logical Partitioning)等創新配置一道,Linux 或 AIX 的可用為應用程式開發和部署提供了一個獨特的依賴於 POWER 體系結構效能的平臺。本文將為您提供構造大部分程式碼和 POWER 平臺所需要的工具和知識。

Linux 發行版本
可選範圍廣是 Linux 社群為人們所津津樂道的一個強大之處。POWER 版 Linux 主要由 Red Hat Linux 和 SUSE Linux 這兩家企業 Linux 廠商提供。這兩種 Linux 發行版本各成體系,各有所長,都提供了 Linux 開發者所期望的完整的工具鏈、庫以及開發工具。本文分別進行了評論。

注意,TurboLinux 也得到了支援。TurboLinux Enterprise Server8 使用的是來自 SUSE Linux 的許可程式碼,所以在下面的論述中,那些適用於 SUSE 的特性同樣適用於 TurboLinux。

Red Hat Enterprise Linux 3 (RHEL3)
Red Hat 成功地充當了開放原始碼社群的領導者和先驅者。2003 年 Red Hat Linux 釋出了可用於 POWER 體系結構的企業版,並帶來了先進的 Linux 技術。

核心
RHEL3 的 2.4.21 Linux 核心為 POWER 體系結構進行了最佳化。甚至在 Linux 2.6 釋出之前,Red Hat 已經在他們的 Linux 2.4 核心中移植(backport)了一些 2.6 的特性。

其中,最引人注目的是 Native Posix Threads for Linux(NPTL)庫。先前的執行緒模型,即 Linux Thread,是傳統的 1:1 執行緒模型,與 Linux 2.4 排程器配合使用,一段時間以來這個模型就是被革新的目標。在 RHEL3 中,Red Hat 將新的執行緒模型從 2.5 的開發樹中移植到了 2.4 核心,從而使得可擴充套件性更好,多執行緒更快,最明顯的是從根本上提高了 Java 效能。

不同於一些商用 UNIX 作業系統中所用的 m:n 執行緒,NPTL 仍是 1:1 模型,但是現在沒有人懷疑它的效能。新的執行緒模型在陳舊的 450 Mhz Intel 處理器上有能力在兩秒鐘內生成和銷燬 100,000 個執行緒,因而可以提供企業級 Linux 等所需的效能。Java 應用程式的執行速度通常會比使用舊的 Linux 執行緒模型時快八倍。

前沿開發的結合並不僅限於核心執行緒模型。RHEL3 中還包括一個新的改進的 glibc,版本為 2.3.1。出於 NPTL 執行緒效能方面的需要,glibc 2.3.1 還為 Linux 應用程式引入了效率更高的庫。

SUSE SLES8
SUSE SLES8 是兩種企業版 Linux 中資格較老的一個,已經到了它的生命週期的末期。SLES 8 的特色是定期更新的 2.4 核心(SUSE 已經為 SLES8 使用者釋出了三個服務包,以確保可以使用補充更新的系統安全和效能),它提供所有類別的選項。有三種帶日誌的檔案系統可供選擇。預設情況下,在 SLES8 中可以使用所有常見的資料庫、Web 伺服器和郵件伺服器應用程式以及最新發布的 KDE 和 Gnome 桌面環境。SLES8 中當前可用的 2.4.21 核心為實時地執行 32 位和 64 位的應用程式提供了一個 64 位的基礎。

即將釋出的 SLES9 現在還在測試中,SUSE 的最後一項任務是融合新的 GCC、glibc 和 Linux 2.6 核心。釋出後,SLES 9 將提供第一個可用於 IBM eServer? iSeries? 和 pSeries? 伺服器的 Linux 2.6 核心。

使用哪個發行版本?
由於 RHEL 3 和 SLES8 所提供的執行緒模型不同,所以當然不能認為會有完全的二進位制相容性。好訊息是,開發者幾乎總會發現,不同的 Linux 發行版本中程式碼編譯是一致的,POWER 版 Linux 也不例外。

不過,在部署時,一些應用程式對具體的發行版本更為敏感。例如,SLES8 上預設使用的 Reiser 檔案系統以高效能地處理小檔案而聞名。主要對小於 1 KB 的檔案進行讀寫訪問的應用程式適合使用這種檔案系統,這樣的程式最好執行在 SLES8 上,而執行 Java 執行緒的應用程式將受益於 NPTL 的 RHEL3 實現。

開放原始碼模型的優點在於它的靈活性,POWER 版 Linux 也是靈活的。也就是說,開發者將可以找到關於在 RHEL3 和 SLES8 上進行開發的通用參考資料。編譯器、IBM Java Developer's Kit ,以及像流行的整合開發環境 Eclipse 這樣的開發工具,都是這兩種發行版本中自由可用的工具的例子。

編譯器和庫
POWER 版 Linux 是兩個方面的結合:最好的開放原始碼開發和企業級的硬體。最好是提供 C、C++ 和 Fortran 編譯器的一個選擇以反映這一結合。

GNU Compiler Collection (GCC)
GNU GCC 是用於所有體系結構的 Linux 中應用最廣泛的編譯器,Red Hat 和 SUSE 都使用此編譯器來編譯隨它們的產品釋出的二進位制檔案(可執行檔案)。由於 GCC 3.2 可以生成 32 位的和 64 位的二進位制檔案,所以 RHEL3 和 SLES8 中都提供了 GCC 3.2。RHEL3 實現利用了一個“biarch”風格的雙編譯器,使用一個編譯器標記(-m64)來進行 64 位編譯。

與之不同,SLES8 使用單獨的 64 位 GCC 的工具鏈,這個工具鏈預設儲存在 /opt/cross 中。為了在 SLES8 中可以使用 64 位編譯器,開發者應該確保他們的配置指令碼和 Makefile 檔案可以識別出這個編譯器。您可以透過將 CC 環境變數設定為 64 位 GCC 編譯器的位置來完成這一任務。

當前,人們正在對 GNU 編譯器集進行重大革新,為 POWER 體系結構而進行效能最佳化。在即將發行的 3.3 和 3.4 中,GCC 的排程和訊號處理將得到改進。另外,針對特定體系結構的最佳化(比如對 IBM JS20 BladeCenter 中 PPC970 晶片的 VMX/Altivec 支援)將為編譯後的程式碼帶來極大的效能優勢。不過,SLES8 和 RHEL3 現在使用的都是 GCC 3.2 版本,在這裡評述了對這些版本效能的最佳化。

GCC 3.2 沒有為 POWER 處理器進行針對特定體系結構的最佳化。所以,編譯時不建議使用針對特定體系結構的標記,比如 -mpower。可以使用這些選項,但通常不會帶來效能上的提高。與 x86 上的 GCC 實現不同,GCC 3.2 中沒有包括 -fPIC 標記。為生成動態連結的二進位制檔案,需要在所有的 Makefile 檔案中包含 -fPIC。如果您正從 Intel 上的 Linux 移植程式碼庫(codebase),這尤其關鍵,因為已有的 Makefile 檔案可能沒有顯式地使用這個標記。

除了要識別出那些沒有被當前用於 POWER 體系結構的 GCC 所使用的標記之外,您應該知道那些對 x86 和 POWER 體系結構來說可用的標記。這些標記包括處理重定位、目錄(table of contents)大小、浮點選項、位調整等等的編譯標記。例如,大 TOC 支援(多於 8K 個條目)需要多個 TOC,由 -mminimal-toc 編譯標記指定。要回顧這些標記,請閱讀原始碼包中的標準 GCC 文件。

IBM VisualAge 編譯器集
除了 GCC 以外,IBM 還發布了高效能 VisualAge 編譯器集,這個編譯器集既可以用於 RHEL3,也可以用於 SLES8。這些用於 C、C++ 和 Fortran 的編譯器將效能最佳化技術發揮到了極致;它們被精心地定製,以全面地利用 POWER 體系結構。高效能運算(High Performance Computing)開發者通常會發現,只要使用這些編譯器來重新編譯他們的程式碼,效能就會提高 30% 以上!

使用 VisualAge 進行最佳化很簡單,只需預先設定最佳化級別,這些級別對應使用不同種類的演算法。通常,使用簡單的 -O3 -qtune=auto 和 -qarch=auto 會帶來最為顯著的效能提高。第三級最佳化將自動識別出晶片型別並進行晶片(但不是體系結構)無關的最佳化。進一步使用 -O4 最佳化標記可以獲得更高的效能,但付出的代價是針對特定晶片的最佳化、程式間分析以及高階轉換例程。高效能程式碼應該首先以 -O3 最佳化,然後再嘗試 -O4。雖然 -O4 可能會提高效能,但是它對程式碼結構更為挑剔,而且 POWER 系列微處理器系列上的二進位制相容性更為受限。

為避免出現庫不相容的不愉快情形,POWER 版 Linux 中的 VisualAge 編譯器設計為分別去使用每個發行版本包中所帶的 glibc,而且它們甚至使用本地 Linux 連結器。渴望效能的應用程式顯然需要 POWER 版 Linux 的這一獨特功能。

有大量的關於用於 POWER 版 Linux 中的 GCC 和 VisualAge 編譯器集編譯期最佳化的文件。在 參考資料 中列出了所有 POWER 版 Linux 開發者都應該放在桌面上的可免費獲得的技術資料。

IBM JDK 1.4.1
IBM 已經將開發資源加入到對定製的 JDK 的改進中,可用於 POWER 版 Linux 的 JDK 既有 32 位的也有 64 位的。BHEL3 和 SLES8 的安裝包中都有 IBM JDK 1.4.1,可以與 POWER 版 Linux 的 Eclipse 整合開發環境配合使用。

開發工具
很多 Linux 開發者樂於使用傳統的開發工具,比如 vi 或 Emacs。自然,這些以及 gdb 等 Linux 中常見的核心級除錯工具都是可用的。不過,除了這些工具以外,POWER 版 Linux 的特色是支援 Eclipse IDE 等開發工具。VisualAge 編譯器有詳細的程式碼分析選項來確定原始碼中的字元排列順序(endianness)以及 64 位相容性,並且,舒適的 KDE 和 Gnome 桌面環境讓那些習慣於圖形介面的開發者非常自如。高效能運算(HPC)以及生命科學(Life Science)開發者將受益於可用的通用應用程式,例如 NCBI 應用程式。IBM 的高階數學和科學庫 ESSL 和 P/ESSL 也可以用來輔助 POWER 版 Linux 上的高效能應用程式。隨著 Globus Toolkit 等相關解決方案與叢集系統管理(Cluster Systems Management, CSM)等叢集工具的結合,基於 POWER 版 Linux 的網格計算變得活躍起來。

結束語
POWER 版 Linux 為那些需要使用更為健壯的硬體的應用程式提供了一個高效能環境,同時還提供了全部的硬體和軟體資源。在雙執行環境中,64 位的應用程式可以與 32 位的應用程式和平共處。IBM iSeries 和 pSeries 系列產品為 Linux 提供了健壯的硬體基礎,而這些產品以前是不能用於 Linux 的。Red Hat 和 SUSE 一直致力於讓人們可以用上最好的開放原始碼發行版本,IBM 則提供為 AIX 開發者所熟悉的領先的中介軟體解決方案。Eclipse 等新開發工具使轉換變得容易,先進的開發環境提供了希望從 Linux 與 IBM iSeries 和 pSeries 伺服器的結合中得到的靈活性和效能。

參考資料
- 深入瞭解 Red Hat Enterprise Linux AS、SUSE SLES8 for IBM iSeries and pSeries 和 TurboLinux。

- POWER 版 Linux 可以使用在 IBM eServer pSeries、IBM eServer iSeries 和 JS20 Blade Center 產品上。在 Linux on POWER 網頁中查詢所有選項。

- 為您的 Linux 應用開發加油提速 提供 DB2、Rational 和 WebSphere 等 IBM 產品下載 —— 還有文件、文章以及其他資訊。您可以跳過這些直接訪問 Linux on POWER 下載頁。IBM RedBooks on Linux topics 也是極好的資訊資源。

- Matt 特別喜歡的兩篇 Linux POWER 開發者參考資料包括“Migrating UNIX Applications for Linux on IBM pSeries and iSeries Servers”和“How To Use IBM VisualAge C++ Version 6.0 for Linux on IBM pSeries and iSeries Servers”(都是 PDF 格式)。

- 跨平臺的 GNU Compiler Collection (GCC) 支援所有語言,從 C 和 C++ 到 Fortran 再到 Ada —— 還有更多!GCC 的 3.3 和 3.4 版本有很多針對 POWER 體系結構的改進。SUSE Enterprise Server 9 將使用一個名為“hammer”的 3.3 版本分支,其中有很多移植自 3.4 的功能。

- 相對於其他編譯器,IBM VisualAge 編譯器集 可以將效能提高 30% 以上。它還結合了對高階的 ESSL 和 P/ESSL(Parallel/Engineering and Scientific Subroutine)數學和科學庫的支援。

- IBM Java Developer Kit 1.4.1SR1 和 Eclipse Integrated Development Environment for Linux 為 POWER 版 Linux 提供了一個完整的 Java 開發環境。

- 透過 linuxppc64.org 您可以瞭解更多關於 POWER 版 Linux 核心開發以及其他 64 位 Linux 問題的資訊。

- 如果您是開放原始碼軟體世界的新手,您將發現“在 Power 上使用 Linux 開放原始碼工具一文很有幫助。

- “POWER 上安裝 Globus”是“為您的 Linux 應用開發加油提速”系列的一部分;您還可以在 Globus Web 站點 上找到非常有用的 文件。

- “Application Development on Linux Power”(developerWorks, 2003 年 3 月)是在 POWER 平臺上部署和開發 Linux 應用程式的指南。

- 在 developerWorks 的 開放原始碼專案專區 查詢 為 Eclipse 使用者準備的文章。至於 Eclipse 外掛和工具,還請參閱 alphaWorks 上的 Eclipse technology page。

- 在 developerWorks Linux 專區 可以找到更多為 Linux 開發者準備的參考資料。

- 在 Developer Bookstore 的 Linux 區,可以找到很多精選的 Linux 書籍。

關於作者
Matt Davis 是 IBM eServer Solutions Enablement 團隊中的一名 Linux 技術顧問。作為 pSeries Linux 專案的一名元老,他研究和測試了新近出現的 pSeries Linux 技術,並寫了一些報告以總結他的發現。這其中包括針對 POWER 版 Linux 的日誌檔案系統(Journaling File Systems),用 POWER 版 Linux 進行並行網格計算,以開放原始碼來取代 POWER 版 Linux 中的商業軟體,以及 Linux 解決方案編目。當他還是得克薩斯州立大學(位於奧斯汀,在那裡他獲得了兩個學位)的一名學生時,他以實習生的身份來到了 IBM。可以透過 與他聯絡。

全文出自 : IBM developerWorks 中國網站

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-952654/,如需轉載,請註明出處,否則將追究法律責任。

相關文章