This is an article I translated for TS media for the Chinese Edition of Linux Journal. Original article on Linux Journal: Remoting Sensing with Linux. 本文為筆者替天充文化翻譯 Linux Journal 中文版之文章,本譯文於2001 年 3 月號凌客誌中見刊。
運用Linux進行遠端遙測
一個採用Linux與「Beowulf」叢集系統後,成功的節省了金錢與時間的企業實證
作者:Mark Lucas / 譯者:劉自強(TzuChiang Liou)
我們今天的主角是位於美國佛羅里達州墨爾本市的ImageLinks公司,他們的工作主要是負責替商業機構處理大型的衛星及航空圖像。這樣的作業常常需要透過三度空間投射、影像處理、複雜的資料融合、以及許多昂貴的計算演算法則,來處理動輒數Giga的影像資料。而本文則是在描述當該公司把系統轉換到Linux之後所獲得的收益。
回到1996年,當時本公司(ImageLinks)剛獲得執照,可以將以前被視為機密的政府軟體商業化,其中包含了將近5,000個由物件導向語言C++所設計出來的原始碼檔案,而這些程式已經發展將近十五年了。公司主要的硬體是建構在高效能的SGI以及SUN的作業平台以及伺服器上,廠商向我們開價這些設備需要將近五十萬的成本,所以每個月就必須付出的錢超過15,000元。而且除了設備之外,其他的成本還有昂貴的版權專斷式軟體的執照費,包含編譯器、工具及相關函式庫等。即使只是想要升級記憶體,也都必須要以高價向賣主購買才不會違反當初的維護合約。
其實,當時公司裡面有幾個同仁早已經開始在家裡使用Linux,所以我們就在想,如果把公司的軟體移植到Linux上會需要更動哪些部分?終於在某天午餐討論過後,我們決定到當地的一家電腦公司、用公司的信用卡買了需要的軟體,並且開始不公開的程式移植作業。
一安裝好Red Hat 5.2版後我們就開始移植的工作,在數個月的研究中,同事Dave Burken和Ken Melero不斷的討論這個專案,企圖找出平台相依性並加以修正。後來我們發現主要的問題是:編譯器無法完全正確處理我們那個龐大的程式碼(templated code)。不過當我們後來安裝了Red Hat 6.0之後,「GCC」編譯器就能正確且直接的處理好上面的問題,也因此加速了移植的作業。
原本當初的假設是:移植在Intel平台上的Linux系統可能會是一個比較節省成本的方案,但我們並不看好這樣的表現可以和高效能的工作站匹敵。幸運的是,第二個假設是錯的!當轉移到Linux平台之後,馬上就在編譯的所花的時間,感受到顯著的效能改善,以往在SGI的Indigo2s機器上,如果要將我們所有的原始碼執行完整的編譯,大約需要十到十二個小時;而同樣的編譯工作在一個雙Pentium CPU的機器上只花了不到兩個小時就完成,更值得一提的是所產生出執行檔的大小,由「GCC」所編譯出來的結果大約只有那些版權壟斷的編譯器編譯出來的一半大小。這代表著比較優異的程式碼最佳化,也是那些開放原始碼工具的許多益處之一;而當我們替Linux平台設計一些測試時,其效能的改善也非常明顯,其中最極端的例子就是在執行「cross-sensor image fusion」上。
「cross-sensor fusion」是將不同等級的衛星影像結合而成一個新的影像的技術,例如,我們常常需要把高解析度的黑白影像與低解析度的彩色影像結合在一起,這些影像多半是由不同的角度、解析度、比例及時間拍攝而成。當我們執行複雜的轉換工作,比如將衛星影像投射在一個內部為3-D的空間模型中時,所有這些因素都會被納入考量,當開始執行時,一個智慧的採樣器會橫跨整個三度空間模型將像素(pixels)投射結合到合理的大小和影像。透過複雜的影像處理及三度空間轉換,這樣的工作會牽涉到幾Giga的數位影像資料,在以往版權壟斷的工作站上,花個週末的時間來執行某些程式是很稀鬆平常的事。但使用Linux之後,我們發現在這些影像融合上有非常卓越的進步,這個戲劇性的效能增加是因為硬體的表現,會隨著軟體工具中最佳化的程式碼而增加。
另一個主要的益處來自於使用「Beowulf」叢集技術,「Beowulf」叢集可以簡單的解釋成為一堆使用一般的網路連結在一起的電腦分支,而成為一個低成本的超級電腦解決方案。也就是在區域網路系統內,使用乙太網路將大多數安裝Linux、核心經過最佳化的電腦連結在一起所呈現的方案。其中有一個節點(node)是被設計為主控的節點,用來控制其他附屬節點的工作排程及負責所有與外界的溝通。
以往,超級電腦需要使用針對其特殊架構手工訂做獨特的軟體,然而最近在平行函式庫(parallel libraries)如PVM或是MPI等的進展,已經慢慢讓這樣的工作越來越簡單。只要使用這套函式庫,程式設計師便可以清楚的知道哪些部分可以設計成為平行處理,而由函式庫負責和超級電腦架構來做比較詳細的「mapping」動作。幸運的是,我們的運算法極端的傾向需要CPU資源而且大致上可以平行處理,換句話說,這個程式碼需要的是浮點運算(floating point mathematical computations),所以重點是:我們的工作可以被切割為數個片段,同時CPU之間不需要做很重要的溝通。因此,設計的需求便牽涉到如何將工作分割成為塊狀(tiles),並且送到不同的機器去處理。
為此,我們建構了一個具備14個節點的叢集系統,將PVM加入我們的程式碼中,並且觀察當我們替叢集增加新的中央處理器後,效能線性的改變。依據我們監控整個執行過程顯示,剛開始的時候,會有一小段溝通時間將資料傳輸到不同的節點上,接著,各節點會盡其所能的處理必要的計算,這樣的結果正是叢集所要達成的理想應用狀態:也就是如果想要加快執行的速度或是增加資料處理量,我們只需要增加處理器即可。因此,隨著我們改用「Beowulf」叢集技術,這項複雜的「cross-sensor fusion」工作有顯著的改善,以往在版權專斷的機器上需要花一個週末的運算時間,使用單一Linux機器,現在減少到只需要幾個小時就能完成,而在「Beowulf」叢集系統中,更只需要幾分鐘就搞定了!
除了效能和成本的益處之外,我們公司同時也感受到了一些其他重要的改進,包含了穩定性的增加、有許多參考文件以及軟體可以很快速的更新。
Mark Lucas目前是ImageLinks公司的首席技術長,同時也是「remotesensing.org」的創辦人,這個計畫是用來推動開放原始碼發展遠端遙測(remote sensing)以及GIS地理資訊系統(geographical information systems)的相關軟體。身為電子工程學士、資訊工程碩士的他,同時也是一位退役的美國空軍官員。
Captions
圖一:在ImageLinks公司的叢集系統中執行「bWatch」的樣子,紅線表示節點間的溝通並顯示出這個行程與CPU相關。
圖二:佛羅里達州墨爾本市衛星照片的一部分,這個影像是由「Landsat 5」的色彩,與「Indian IRS 1C」號衛星的五公尺空間解析度(5m spatial resolution)結合而成。
圖三:加州Milpitas市的合成影像,這是由多重衛星影像及許多向量圖層融合而成的。
圖四:ImageLinks公司內部結合12個節點的「Beowulf」叢集系統,包含了RAID磁碟陣列、100BT的乙太網路轉換器(Switch)及電力控制系統。
圖五:這個節點是掛載在一個4U rack的機器中,具備四顆Pentium III 650MHz的CPU、並且配備有384 Mega的記憶體。
圖六:掛載上rack之前,Jeff Largent正在測試這些節點。
side word
以往在版權專斷的機器上需要花一個週末的運算時間,使用單一Linux機器,現在減少到只需要幾個小時就能完成,而在「Beowulf」叢集系統中,更只需要幾分鐘就搞定了!