Power服務器版Linux系統(tǒng)所需工具介紹
64 位 POWER 體系結構是公認的高性能、可靠而且有用的企業(yè)平臺,它為 UNIX 和 Linux 應用程序開發(fā)者提供了新的選擇。不管是誰,只要有在其他平臺上使用 AIX 或者 Linux 的經(jīng)驗,就可以受益于與世界頂尖的 IBM 硬件 POWER 相結合的開放源代碼社區(qū)強有力的基礎。
從價格適中的 2- 路服務器到垂直擴展的超級計算機再到世界頂級的 JS20 BladeCenter,基于 POWER 的機器具備所有的大小和等級,始終領先于人們對企業(yè)級硬件的預期。與動態(tài)邏輯分區(qū)(Dynamic Logical Partitioning)等創(chuàng)新配置一道,Linux 或 AIX 的可用為應用程序開發(fā)和部署提供了一個獨特的依賴于 POWER 體系結構性能的平臺。本文把為您提供構造大部分代碼和 POWER 平臺所需要的工具和知識。
Linux 發(fā)行版本
可選范圍廣是 Linux 社區(qū)為人們所津津樂道的一個強大之處。POWER 版 Linux 主要由 Red Hat Linux 和 SUSE Linux 這兩家企業(yè) Linux 廠商提供。這兩種 Linux 發(fā)行版本各成體系,各有所長,都提供了 Linux 開發(fā)者所期望的完整的工具鏈、庫以及開發(fā)工具。本文分別進行了評論。
注意,TurboLinux 也得到了支持。TurboLinux Enterprise Server8 使用的是來自 SUSE Linux 的許可代碼,所以在下面的論述中,那些適用于 SUSE 的特性同樣適用于 TurboLinux。
Red Hat Enterprise Linux 3 (RHEL3)
Red Hat 成功地充當了開放源代碼社區(qū)的領導者和先驅(qū)者。2003 年 Red Hat Linux 發(fā)布了可用于 POWER 體系結構的企業(yè)版,并帶來了先進的 Linux 技術。
內(nèi)核
RHEL3 的 2.4.21 Linux 內(nèi)核為 POWER 體系結構進行了優(yōu)化。甚至在 Linux 2.6 發(fā)布之前,Red Hat 已經(jīng)在他們的 Linux 2.4 內(nèi)核中移植(backport)了一些 2.6 的特性。
其中,最引人注目的是 Native Posix Threads for Linux(NPTL)庫。先前的線程模型,即 Linux Thread,是傳統(tǒng)的 1:1 線程模型,與 Linux 2.4 調(diào)度器配合使用,一段時間以來這個模型就是被革新的目標。在 RHEL3 中,Red Hat 把新的線程模型從 2.5 的開發(fā)樹中移植到了 2.4 內(nèi)核,從而使得可擴展性更好,多線程更快,最明顯的是從根本上提高了 Java 性能。
不同于一些商用 UNIX 操作系統(tǒng)中所用的 m:n 線程,NPTL 仍是 1:1 模型,但是現(xiàn)在沒有人懷疑它的性能。新的線程模型在陳舊的 450 Mhz Intel 處理器上有能力在兩秒鐘內(nèi)生成和銷毀 100,000 個線程,因而可以提供企業(yè)級 Linux 等所需的性能。Java 應用程序的執(zhí)行速度通常會比使用舊的 Linux 線程模型時快八倍。
前沿開發(fā)的結合并不僅限于內(nèi)核線程模型。RHEL3 中還包括一個新的改進的 glibc,版本為 2.3.1。出于 NPTL 線程性能方面的需要,glibc 2.3.1 還為 Linux 應用程序引入了效率更高的庫。
SUSE SLES8
SUSE SLES8 是兩種企業(yè)版 Linux 中資格較老的一個,已經(jīng)到了它的生命周期的末期。SLES 8 的特色是定期更新的 2.4 內(nèi)核(SUSE 已經(jīng)為 SLES8 用戶發(fā)布了三個服務包,以確??梢允褂醚a充更新的系統(tǒng)安全和性能),它提供所有類別的選項。有三種帶日志的文件系統(tǒng)可供選擇。默認情況下,在 SLES8 中可以使用所有常見的數(shù)據(jù)庫、Web 服務器和郵件服務器應用程序以及最新發(fā)布的 KDE 和 Gnome 桌面環(huán)境。SLES8 中當前可用的 2.4.21 內(nèi)核為實時地執(zhí)行 32 位和 64 位的應用程序提供了一個 64 位的基礎。
即把發(fā)布的 SLES9 現(xiàn)在還在測試中,SUSE 的最后一項任務是融合新的 GCC、glibc 和 Linux 2.6 內(nèi)核。發(fā)布后,SLES 9 把提供第一個可用于 IBM eServer? iSeries? 和 pSeries? 服務器的 Linux 2.6 內(nèi)核。 [#page_#][#page_#]
使用哪個發(fā)行版本?
由于 RHEL 3 和 SLES8 所提供的線程模型不同,所以當然不能認為會有完全的二進制兼容性。好消息是,開發(fā)者幾乎總會發(fā)現(xiàn),不同的 Linux 發(fā)行版本中代碼編譯是一致的,POWER 版 Linux 也不例外。
不過,在部署時,一些應用程序?qū)唧w的發(fā)行版本更為敏感。例如,SLES8 上默認使用的 Reiser 文件系統(tǒng)以高性能地處理小文件而聞名。主要對小于 1 KB 的文件進行讀寫訪問的應用程序適合使用這種文件系統(tǒng),這樣的程序最好運行在 SLES8 上,而運行 Java 線程的應用程序把受益于 NPTL 的 RHEL3 實現(xiàn)。
開放源代碼模型的優(yōu)點在于它的靈活性,POWER 版 Linux 也是靈活的。也就是說,開發(fā)者把可以找到關于在 RHEL3 和 SLES8 上進行開發(fā)的通用參考資料。編譯器、IBM Java Developer’s Kit ,以及像流行的集成開發(fā)環(huán)境 Eclipse 這樣的開發(fā)工具,都是這兩種發(fā)行版本中自由可用的工具的例子。
編譯器和庫
POWER 版 Linux 是兩個方面的結合:最好的開放源代碼開發(fā)和企業(yè)級的硬件。最好是提供 C、C++ 和 Fortran 編譯器的一個選擇以反映這一結合。
GNU Compiler Collection (GCC)
GNU GCC 是用于所有體系結構的 Linux 中應用最廣泛的編譯器,Red Hat 和 SUSE 都使用此編譯器來編譯隨它們的產(chǎn)品發(fā)布的二進制文件(可執(zhí)行文件)。由于 GCC 3.2 可以生成 32 位的和 64 位的二進制文件,所以 RHEL3 和 SLES8 中都提供了 GCC 3.2。RHEL3 實現(xiàn)利用了一個“biarch”風格的雙編譯器,使用一個編譯器標記(-m64)來進行 64 位編譯。
與之不同,SLES8 使用單獨的 64 位 GCC 的工具鏈,這個工具鏈默認存儲在 /opt/cross 中。為了在 SLES8 中可以使用 64 位編譯器,開發(fā)者應該確保他們的配置腳本和 Makefile 文件可以識別出這個編譯器。您可以通過把 CC 環(huán)境變量設置為 64 位 GCC 編譯器的位置來完成這一任務。
當前,人們正在對 GNU 編譯器集進行重大革新,為 POWER 體系結構而進行性能優(yōu)化。在即把發(fā)行的 3.3 和 3.4 中,GCC 的調(diào)度和信號處理把得到改進。另外,針對特定體系結構的優(yōu)化(比如對 IBM JS20 BladeCenter 中 PPC970 芯片的 VMX/Altivec 支持)把為編譯后的代碼帶來極大的性能優(yōu)勢。不過,SLES8 和 RHEL3 現(xiàn)在使用的都是 GCC 3.2 版本,在這里評述了對這些版本性能的優(yōu)化。
GCC 3.2 沒有為 POWER 處理器進行針對特定體系結構的優(yōu)化。所以,編譯時不建議使用針對特定體系結構的標記,比如 -mpower??梢允褂眠@些選項,但通常不會帶來性能上的提高。與 x86 上的 GCC 實現(xiàn)不同,GCC 3.2 中沒有包括 -fPIC 標記。為生成動態(tài)鏈接的二進制文件,需要在所有的 Makefile 文件中包含 -fPIC。如果您正從 Intel 上的 Linux 移植代碼庫(codebase),這尤其關鍵,因為已有的 Makefile 文件可能沒有顯式地使用這個標記。
除了要識別出那些沒有被當前用于 POWER 體系結構的 GCC 所使用的標記之外,您應該知道那些對 x86 和 POWER 體系結構來說可用的標記。這些標記包括處理重定位、目錄(table of contents)大小、浮點選項、位調(diào)整等等的編譯標記。例如,大 TOC 支持(多于 8K 個條目)需要多個 TOC,由 -mminimal-toc 編譯標記指定。要回顧這些標記,請閱讀源代碼包中的標準 GCC 文檔。 [#page_#]
IBM VisualAge 編譯器集
除了 GCC 以外,IBM 還發(fā)布了高性能 VisualAge 編譯器集,這個編譯器集既可以用于 RHEL3,也可以用于 SLES8。這些用于 C、C++ 和 Fortran 的編譯器把性能優(yōu)化技術發(fā)揮到了極致;它們被精心地定制,以全面地利用 POWER 體系結構。高性能計算(High Performance Computing)開發(fā)者通常會發(fā)現(xiàn),只要使用這些編譯器來重新編譯他們的代碼,性能就會提高 30% 以上!
使用 VisualAge 進行優(yōu)化很簡單,只需預先設定優(yōu)化級別,這些級別對應使用不同種類的算法。通常,使用簡單的 -O3 -qtune=auto 和 -qarch=auto 會帶來最為顯著的性能提高。第三級優(yōu)化把自動識別出芯片類型并進行芯片(但不是體系結構)無關的優(yōu)化。進一步使用 -O4 優(yōu)化標記可以獲得更高的性能,但付出的代價是針對特定芯片的優(yōu)化、程序間分析以及高階轉(zhuǎn)換例程。高性能代碼應該首先以 -O3 優(yōu)化,然后再嘗試 -O4。雖然 -O4 可能會提高性能,但是它對代碼結構更為挑剔,而且 POWER 系列微處理器系列上的二進制兼容性更為受限。
為避免出現(xiàn)庫不兼容的不愉快情形,POWER 版 Linux 中的 VisualAge 編譯器設計為分別去使用每個發(fā)行版本包中所帶的 glibc,而且它們甚至使用本地 Linux 鏈接器。渴望性能的應用程序顯然需要 POWER 版 Linux 的這一獨特功能。
有大量的關于用于 POWER 版 Linux 中的 GCC 和 VisualAge 編譯器集編譯期優(yōu)化的文檔。在 參考資料 中列出了所有 POWER 版 Linux 開發(fā)者都應該放在桌面上的可免費獲得的技術資料。
IBM JDK 1.4.1
IBM 已經(jīng)把開發(fā)資源加入到對定制的 JDK 的改進中,可用于 POWER 版 Linux 的 JDK 既有 32 位的也有 64 位的。BHEL3 和 SLES8 的安裝包中都有 IBM JDK 1.4.1,可以與 POWER 版 Linux 的 Eclipse 集成開發(fā)環(huán)境配合使用。
開發(fā)工具
很多 Linux 開發(fā)者樂于使用傳統(tǒng)的開發(fā)工具,比如 vi 或 Emacs。自然,這些以及 gdb 等 Linux 中常見的內(nèi)核級調(diào)試工具都是可用的。不過,除了這些工具以外,POWER 版 Linux 的特色是支持 Eclipse IDE 等開發(fā)工具。VisualAge 編譯器有詳細的代碼分析選項來確定源代碼中的字符排列順序(endianness)以及 64 位兼容性,并且,舒適的 KDE 和 Gnome 桌面環(huán)境讓那些習慣于圖形界面的開發(fā)者非常自如。高性能計算(HPC)以及生命科學(Life Science)開發(fā)者把受益于可用的通用應用程序,例如 NCBI 應用程序。IBM 的高級數(shù)學和科學庫 ESSL 和 P/ESSL 也可以用來輔助 POWER 版 Linux 上的高性能應用程序。
【編輯推薦】