有關CPU的多核化發展,以2001年IBM發表的POWER4為開端,之後2004年底HP、Sun也先後跟進,分別推出PA-8800與UltraSPARC IV,到了2005年AMD推出雙核版Opteron,成為x86領域的第一顆雙核CPU,此使x86霸主Intel大受震驚,並擬定一連串的追趕計畫,進而掀起2006年的多核化競賽。
CPU全面走向多核化發展,與CPU緊密關連的OS(作業系統)也必須有所因應,雖說多核CPU對OS而言,與過去運用多顆單核CPU所構成的SMP(對稱運算)架構系統並無二致,OS層面不需要任何變動調整,多核CPU也可發揮其多核功效。
話雖如此,但若論及技術細節,多核CPU與OS間仍有諸多要點值得討論,同時多核化也進一步引發了虛擬化風潮,如此對OS而言也是另一項挑戰。以下本文將對這些課題進行更多的說明與討論。
效能擴展性
OS面對多核型CPU,首要的使命就是徹底發揮多核後所帶來的效能提升,更簡單說即是伺服器領域所常言的效能擴展性(Scalability,一般也常翻譯成:延展性)。關於此必須舉例說明,倘若今日有1部伺服器,該伺服器內可裝置2顆單核CPU,即便如此該部伺服器也不可能具有2倍於1顆單核CPU的效能,原因是:2顆CPU雖可共同分擔工作使工作加速完成,然而2顆CPU間也必須對工作進行協同溝通,溝通協調也一樣要耗佔執行處理的運算資源、記憶體的存取頻寬資源,扣去耗佔後,2顆CPU真正發揮、呈現的效能約170%,而非200%,其中少去的30%即是溝通協調的耗佔。
以此類推,當CPU數目愈多時,各CPU間的溝通協調需求也會增多,耗佔也會增加,在1顆CPU時是100%的效能,在2顆CPU時是170%,等於第2個加入的CPU僅發揮70%的效能,而在4顆單核CPU的伺服器中,第3顆CPU僅發揮60%的效能、第4顆也一樣僅60%效能,如此進行加總:100%+70%+60%+60%=290%,1部4顆單核CPU的伺服器僅有2.9顆的效能,等於有1.1顆的效能因溝通協調而耗去,而不是用於實際的運算產能中。
所以,多CPU的伺服器系統必須讓效能盡可能獲得線性擴展,即是讓效能展現要盡可能逼近1+1=2的理想簡單數學,前面所舉的例子:4顆僅2.9顆的效能,是過去Windows NT 4.0作業系統初支援4-way(4顆單核CPU)伺服器時的情形。同理,在1部64-way(64顆單核CPU)的伺服器中,Solaris作業系統能讓伺服器發揮63顆CPU的總體效能,其中溝通協調僅耗用1顆CPU的效能。
當然!OS能否完全發揮每顆CPU的效能,也牽涉到更底層的伺服器硬體連接架構,CPU與記憶體間、CPU與CPU間的傳輸頻寬是否夠大、傳遞是否夠快無延遲、傳輸路由是否夠智慧性等,也一樣深深影響效能擴展性,事實上硬體連接性對效能擴展性的影響更甚OS,OS則是在硬體連接架構決定後,盡可能別再增加溝通協調的折耗,使原有硬體設計發揮到最大效能。
將以上的說明套用到今日的雙核上,1顆雙核CPU事實上無法發揮2倍於過往1顆單核CPU的效能,此一樣是受制於溝通協調的折耗,雖然同一封裝內有2個CPU核心,但2個核心卻要共用1組前端匯流排(Front Side Bus;FSB),使記憶體存取成為效能傳輸的瓶頸,一般而言1顆雙核僅有過去1顆單核的1.4倍、1.5倍效能,以此延伸,4核CPU的總體效能也一樣會受限於FSB頻寬,除非能在單一封裝內增加更多組FSB,或提升FSB的頻寬傳輸力,否則情形不會改善。
系統分割能力
在雙核、多核尚未成風氣前,運算效能過剩的問題就已經出現,在雙核、多核成風後,過剩情形自然更加嚴重。
為了消化過剩的效能,業界開始鼓吹伺服器統合(Server Consolidation),運用1部新款、效能更高的伺服器來取代過去多部舊款伺服器的工作,假若過去用4部2-way伺服器來執行3個部門的電子信件收發,而今只要用1部4-way、雙核的伺服器就可以全部取代,甚至在效能表現上較過去理想。
統合之後,對資訊管理人員而言可以減少伺服器的管理數,過去要逐一為4部伺服器進行檢視維護,相同工作要重複4次,而今只要檢視維護單一部伺服器即可,省下另3次的時間心力。此外,統合後的機房空間精省性、用電的控管等也有幫助。
為了呼應、支援統合理念,伺服器硬體也加入了系統分割的功能,透過分割技術能使1部大型伺服器虛擬成多部各自獨立運作的中小型伺服器,如此可使運算資源化整為零,更加妥善運用。
不過,以硬體手法實現的系統分割功能有其限制,其運算資源的調撥必須以4顆、2顆或1顆CPU為單位來進行挪動,然今日即便是1顆CPU的效能都相當強悍,使得硬體式的系統分割技術無法做到夠細膩的資源調整,對此,就必須運用OS的軟體手法來實現系統分割。
運用OS的軟體分割技術,可以在1顆CPU上執行多個子OS(Guest OS),並在各個子OS上各自執行其應用程式(Application,App),同時提供分割能力的主OS(Host OS)自己也能執行App。透過此種作法,CPU的運算力可以更細膩的分配運用。
也因為有了「主OS、子OS」之別,主OS具有開設、關閉、管控子OS的功效及權限,但主OS自身也可像子OS般地執行App,如此主OS身兼二職,一方面要投入運算執行、一方面要進行資源的調撥管控,反而使兩種工作都不易達至理想,因此有了完全只專責在硬體資源管控、調撥的OS,此種OS稱為Hypervisor(也稱:虛擬機器監督器),Hypervisor不再擔任應用程式執行的工作,而只負責管理硬體資源及各個只執行App的OS。
舉例而言,IBM在其大型主機上所用的z/VM即是Hypervisor,或者在x86系統也有VMWare ESX、Xen等Hypervisor。至於仍然身兼傳統OS並具有開設子OS功效的OS,多半是在既有OS上加裝軟體程式來達成,如VMWare Workstation、Virtual Server等程式。
安全隔離性
OS具有系統分割能力後,也就等於具備了虛擬化能力,可將一部伺服器虛擬成多部伺服器,可以讓1顆CPU可以執行多個OS,也可以讓多顆CPU執行1個OS。
虛擬化後硬體資源獲得更徹底、細膩的運用,但也衍生出一個問題,若用多顆CPU執行一個OS,多顆CPU中若有一顆在運作中故障壞去,則OS的執行運作就會發生錯誤,尤其一個OS使用愈多顆CPU,CPU故障的機率也會增加。反過來,當一個CPU同時執行多個OS時,如果該顆CPU故障壞去,則同時多個OS就會一併執行錯誤。
有了資源靈活性後,進一步的也必須重視執行安全性,為此OS開始發展各種容錯技術,若是多顆CPU執行1個OS,則必須在某顆CPU發生故障時,自動將未完成的工作轉移到其他正常運作的CPU上,並使錯誤的部分回復到未錯誤前的正常、正確階段。
舉例而言,IBM的eLiza(電子蜥蜴)計畫就具有自我防禦、自我隔離等功效,或如Sun在Solaris 10中的DTrace技術,能對OS運作進行更詳整的運作追蹤與錯誤管控。
跨平台虛擬能力
雙核、多核使效能進一步過剩的結果,OS也開始跨出自有的平台環境,支援起其他OS上的App執行,一方面可以讓統合功效更加擴大,另一方面也等於挖其他OS的牆角,以壯大自有OS陣營的氣勢。
以實際為例,IBM在推出使用POWER4 CPU的伺服器後,該伺服器所搭配的AIX 5L作業系統也開始支援Linux的App執行環境,在此之前的AIX 4.x只能執行原有屬於AIX的App,而不能執行Linux的App,而AIX 5L能同時執行AIX的App與Linux的App後,使IBM AIX伺服器的運用價值更獲提升,且AIX伺服器的系統堅穩性勝過一般用x86架構的Linux伺服器,如此也將使較重視與講究系統堅穩性的Linux用戶轉而改用AIX伺服器。
類似的,Sun的Solaris 10作業系統也試圖內嵌、融入Linux的App執行環境,使Solaris既可執行自己Solaris原有的App,也可以追加執行Linux的App,此技術在研發階段時稱為Zones,之後稱為Solaris Container(容器)。
當然!也因為是以系統分割技術為基礎來模擬其他作業系統的App執行環境,所以在應用程式出錯時,也可以運用分割技術將錯誤限縮在一定的範疇內,使錯誤影響不會進一步擴散。
值得注意的是,模擬其他OS上的App執行環境,不見得能做到100%的相容模擬,有時仍需要對App進行重新編譯、調修等程序,此外前面所提到的Hypervisor也不見得能執行相容執行原有的OS,有時也需要改版、改寫才能讓OS在Hypervisor上執行。
結論
往未來看,多核後為OS所帶來的挑戰,除了效能擴展性、資源的靈活調度性、安全防護隔離性、虛擬相容性外,靈活的資源分配、對應也容易造成資訊管理者額外的新負擔,特別是OS在本機、單機管控外,也逐漸往多機的叢集、跨網的網格路線發展,如此對應複雜度將更高,如何簡化資源管理,也將會成為多核後OS的一項新課題。
《圖一 IBM的POWER4首開CPU雙核化的先驅,圖中銀色金屬框中間有4個POWER4裸晶,每個裸晶上有2個執行核心,如此總共有8個執行核心在同一封裝內。(資料來源:IBM.com)》 |
|
《圖二 IBM在eLiza專案技術計畫的4大強調:自我組態配置、自我維護、自我保護、自我最佳化,此亦是多核化後,如何提升安全堅穩性,同時簡化維護管理所必須的要素。(資料來源:IBM.com)》 |
|
《圖三 Sun Microsystems的系統分割功能稱為Domain技術,圖中是一部Sun的E10K(Enterprise 10000型)伺服器,該伺服器有64個CPU,該機具備的硬體分割功效能夠以每4顆CPU為一個單位進行運算資源的調撥,圖中第一個Domain用12顆CPU,第二個用16顆,第三個用8顆。(資料來源:Sun.com)》 |
|
《圖四 IBM的eServer i5系列伺服器(今已改稱System i系列)運用POWER Hypervisor技術,使其上可執行i5/OS、Linux、AIX 5L等作業系統,同時可運用虛擬I/O、虛擬乙太網路等技術與Windows、Linux伺服器進行互通。(資料來源:IBM.com)》 |
|
《圖五 Solaris Container技術的示意圖,1號池(Pool,即運用系統分割所建立出的系統分區)具有2顆CPU,2號池擁有3顆CPU,在2個池之上還可以建立若干個Zone,每個Zone在該池中所配發到的運算力也可再行調整、調撥。(資料來源:Fujitsu.com)》 |
|
《圖六 VMWare公司的VMWare ESX軟體即是一套Hypervisor,Hypervisor運用系統分割技術來建立多個獨立分區(也稱為:虛擬機器),每個獨立分區如同一部獨立伺服器,可在其上執行作業系統、應用程式。(資料來源:VMWare.com)》 |
|