openMosix

OpenMosix 將群集能力添加到Linux 核心,從而允許任何標準 Linux 進程利用群集的資源。通過使用自適應負載均衡技術,運行在群集的一個節點上的進程可以透明地“遷移”到另一個節點(在該節點上,它們可以更快地執行)上。

簡介

openMOSIX是一種Linux群集技術
OpenMosix 將群集能力添加到Linux 核心,從而允許任何標準 Linux 進程利用群集的資源。通過使用自適應負載均衡技術,運行在群集的一個節點上的進程可以透明地“遷移”到另一個節點(在該節點上,它們可以更快地執行)上。 因為 openMosix 對於所有運行中的程式都是完全透明的,所以被遷移的進程甚至不知道(或不需要知道)它正在遠程系統上運行。就遠程進程和運行在最初節點(稱為“宿主節 點”)上的其它進程而言,該進程是在本地運行的。
openMosix 的這種透明性意味著不需要專門的編程,即可利用 openMosix 的負載均衡技術。實際上,預設 openMosix 安裝會自動地將進程遷移到“最佳”節點上。這使得 openMosix 成為了能夠立即為大量應用程式帶來好處的群集解決方案。

特點

openMosix 真正的奇妙之處在於它可以將許多 Linux 機器轉換成一個類似於大型虛擬 SMP(對稱多處理器)系統的東西。但是,兩者之間有一些差異。首先,在“真正的”SMP 系統上,兩個或更多 CPU 之間可以很快地交換數據;但使用 openMosix 時,節點之間彼此通信的速度是由 LAN 的速度決定的。使用千兆位乙太網或其它高頻寬聯網技術能夠提高 openMosix 群集的效率。
當 然,openMosix 提供了許多傳統的多處理器系統不能提供的好處。使用 openMosix 時,您可以使用便宜的 PC 硬體,創建由數十個甚至數百個節點組成的群集。與此相反,相對於您的預算而言,包含大量處理器的 SMP 系統價格可能會昂貴得驚人。對於許多應用程式,使用 openMosix 比使用傳統超級計算機或大型機更“划算”。當然,您完全可以在許多高端多處理器系統上運行 OpenMosix。正如先前提到的,將 openMosix 與性能增強技術組合起來也是有益的,譬如將它與 Intel 超執行緒技術合併使用,後者可用於使用 Intel Xeon 處理器的 xSeries 伺服器,目前 Linux 已支持該技術。超執行緒技術通過使單個 Xeon 處理器能夠在作業系統上表現為兩個虛擬處理器,以改進執行緒應用程式的性能。通過同時利用 SMP 和超執行緒,您可以從擁有多個物理和/或虛擬處理器中受益,並可享受 openMosix 本身的優點。甚至有可能(並且很輕鬆!)與現有的 MPI 或 PVM 程式一起使用 openMosix,以便進一步最佳化支持群集的應用程式的性能。
OpenMosix(象 SMP 系統一樣)不能在多個物理 CPU上同時執行單個進程。這意味著 openMosix 不能加速象 Mozilla 這樣的單進程程式,而只能將它遷移到執行效率最高的節點上。此外,openMosix 目前不支持多個協作執行緒彼此隔離。
與此相反,超執行緒技術允許多個執行緒同時在不同的邏輯處理器上執行。因此,關注性能的用戶可能希望以創造性的方法組合超執行緒技術和 openMosix,因為這兩種技術可以互補。通過將使用 Xeon 處理器的節點組裝成群集節點,就能夠使用超執行緒技術來提高每個節點處理多個協作執行緒的能力,這些協作執行緒是不能在 openMosix 節點之間分隔和分布的;根據您規劃使用群集的方式,利用這些技術將導致顯著的性能提升。
當然,openMosix 會考慮使並行執行在進程級別上的伸縮性非常好。OpenMosix 可以毫無問題地在節點之間遷移大多數標準 Linux 進程。如果一個應用程式派生出許多子進程,每個子進程都執行工作,那么 openMosix 能夠將這些進程中的每一個都遷移到群集中的一個適當的節點上。即使特定應用程式並沒有設計成使用多個可以獨立遷移的子進程,您也可以利用這種能力。例如, 如果您想使用群集壓縮 12 個數字音軌,則可以簡單地同時啟動所有 12 個音頻編碼進程。數秒之後,openMosix 會將每個進程都遷移到群集中的一個合適節點上。如果您的群集恰好有 12 個節點,那么完成音頻編碼作業的速度幾乎比使用一台機器時快 12 倍。如果計畫同時運行的進程數比群集中的節點數多,那么多進程和超執行緒將向您提供額外的性能優勢。

發展歷程

OpenMosix 是最初 Mosix 項目的一個相當新的分支Mosix 也為 Linux 提供了透明的群集解決方案。那么,為什麼要使用 openMosix 呢,這裡是一些很好的理由。在 2001 年末,Mosix 項目的領導決定在非 GPL 許可證下發布 Mosix 的所有新版本(它們原本是 GPL 代碼)。實際上,除了著作權和一句“All rights reserved”之外,現在新的 Mosix 代碼根本不包含任何許可證。因為這個突如其來和意外的變化,所以不能將 Mosix 的新發行版看作是免費軟體,並且,關於用戶對新的 Mosix 代碼擁有什麼權利還不清楚。實際上,在今後的日子裡,沒有什麼可以阻止 Mosix 的作者向 Mosix 用戶收取著作權費。
顯然,這個突如其來的許可變化引起了許多 Mosix 當前用戶的關注,由於 Mosix 網站未經說明就刪除了代碼和 Mosix 郵件列表檔案本身這一事實,因而引起了更多的關注。令人欣慰的是,並不是只有這些用戶才關注這一突然變化。Mosix 項目聯合經理 Moshe Bar 不贊成放棄 GPL 許可。作為對這一變化的回響,Moshe 啟動了 openMosix 項目,目的是確保廣大用戶可以繼續使用 Mosix 的免費版本。
自從 openMosix 項目開始以來,原來安裝了 Mosix 的大量用戶都轉而安裝 openMosix ― 據最保守估計有 350 例以上。此外,Moshe 更開放的新開發風格使 openMosix 的開發速度迅速加快。目前有 14 個人積極地從事 openMosix 開發工作,但只有 4 個人為 Mosix 工作。接下來,他們在 openMosix 代碼中修正了許多錯誤並添加了性能增強,並正在開發許許多多與新的便利性、功能和性能相關的特性。既然“灰塵已經撣去”,看起來 openMosix/Mosix 的分家使得一個新的 Linux 群集解決方案得以誕生,它比原有的其它解決方案更好、更健壯並且開發得更迅速。
要設定 openMosix 群集,您需要兩個或更多連線在 LAN 中的 Linux 系統。要運行 openMosix,這些系統應該能編譯和運行 2.4 系列的核心。

使用技巧

建議使用至少 100 兆位(快速)乙太網。標準(10 兆位)乙太網不會向您提供良好的群集性能,但如果您只是想玩玩 openMosix,這應該也不錯。千兆位乙太網是可選的,但卻是有益的。千兆位乙太網網卡還在不斷降價;130 美元就可以買到可靠的千兆位乙太網網卡。但是,請別誤以為非要千兆位乙太網不可;只要用快速乙太網,openMosix 就可以出色地完成許多任務了。
將機器的乙太網卡連線到專用的高速交換機上也是很有益的。這樣做,各個系統都能夠以“全雙工”方式通過乙太網進行通信,從而有效地使頻寬加倍。如果機器的數 量有限,則您可能考慮使用專門繞制的(specially-wired)乙太網電纜將系統之間彼此直接地連線起來。這樣做,能夠以相當低的價格獲得“類交換機(switch-like)”的全雙工性能,使用具有 2 個或 3 個節點的群集時,這個技巧很有用,因為這些配置只需要每台機器分別有一塊或兩塊網卡(NIC)即可。
推薦使用大量交換空間。這將允許從群集中動態地除去節點而不至於使現有節點耗盡虛擬記憶體。再提一下,這是推薦作法,只有在您讓群集超負荷運行的極端情況下,它才會顯現出差異。
再說一遍,這些建議全部都是可選的,完全有可能使用兩台運行 Pentium 系列處理器的機器在標準乙太網上建立群集。網路越快,openMosix 在群集中的節點之間就能夠更有效地遷移進程。用快速網路玩 openMosix 更有樂趣。說到玩 openMosix,請關注我的下一篇文章,那時我將向您演示如何設定真正屬於您自己的 openMosix 群集。在本系列文章的第三部分中,要準備好享受很多樂趣,因為那時我們將看到 openMosix 運行起來。

相關詞條

相關搜尋

熱門詞條

聯絡我們