提升 Linux 開發人員的能力

來源:互聯網
上載者:User
Matt Davis (mattdavis@us.ibm.com)
Linux Power 技術顧問,IBM

在基於 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 案頭環境讓那些習慣於圖形介面的開發人員非常自如。Alibaba Cloud HPC以及生命科學(Life Science)開發人員將受益於可用的跨平台 app程式,例如 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。可以通過 mattdavis@us.ibm.com 與他聯絡。

全文出自 : IBM developerWorks 中國網站

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.