- 走入IBM小型機世界
- Orian編著
- 1191字
- 2018-12-28 23:12:15
2.4 SMP和群集
2.4.1 SMP對稱多處理器的概念
SMP(Symmetric multiprocessing,對稱多處理器技術)是提高系統處理能力的一種方法。單CPU同時只能處理一個線程,如果有許多線程需要執行,CPU數量必然是一個瓶頸,只能通過提高CPU頻率提高處理性能。MP技術(Multi-Processing,多處理技術)使用多個CPU能夠協同工作,并行處理,每個CPU在執行隊列中選取一個線程執行。MP系統依據資源共享方式,有多種類型:
1.松耦合的多處理技術
許多不同系統通過網絡通信技術進行互聯,通常通過軟件技術實現,例如IBM的SP系統(System Parallel,并行系統)、使用群集軟件HACMP的并行版(PSSP),建立起松耦合的多處理架構。不同的系統被稱為節點,可以互相共享文件、存儲,但并不共享CPU和內存,通過專用高速網絡進行節點間通信(SP系統專用的交換網絡,或者Infinity Band網絡),利用軟件控制任務分發和并行處理。
2.緊耦合的多處理技術
多個CPU之間共享部分內存,但每個CPU都有自己的獨立內存和總線結構,通過一個操作系統控制不同處理器之間協同工作,一般有一個主處理器,管理其他從處理器,如果此主處理器不能工作,則由第二候選處理器升級為主處理器。
3.對稱多處理技術
多個CPU之間沒有區別,平等地訪問內存、外設、一個操作系統。操作系統管理著一個隊列,每個處理器依次處理隊列中的進程。如果兩個處理器同時請求訪問一個資源(例如同一段內存地址),由硬件、軟件的鎖機制去解決資源爭用問題。
pSeries采用的就是SMP結構。在AIX中,每個處理器依據其物理位置,依次標記為:proc0,proc1,…不同處理器在正常運行的時候沒有區別,但是在機器啟動的時候,通常由proc0控制引導過程,如果必要,也可以控制系統內核從其他的處理器引導系統。
由于SMP需要協調各個處理器之間的工作,因此當處理器數量很多,或者執行任務的并行度差(任務之間有復雜的邏輯關聯)時,CPU數量增加,則系統性能提高的比例遞減,也就是所謂的線性度不好。線性度與CPU設計、操作系統架構及任務類型關系密切,每個計算機廠商都有自己的一套理論來支持自己的設計體系,并沒有哪一種理論可以占據絕對優勢。例如Sun走的是“群毆”路線,用數量眾多的CPU、內存來提高總體性能,盡管最后將近滿配的時候,每個CPU所帶來的性能提升非常有限。Sun服務器中動輒幾十顆,甚至一百多顆CPU并行!IBM則走向另一個極端,甚至曾經建議客戶不要使用12顆以上的CPU運行一個操作系統映像(當然也有人說這是因為當時IBM的最高端服務器S70只能支持12顆CPU,作者則覺得兩種原因都有)。現在呢,IBM的UNIX服務器仍然是采用少而精的策略,最高端服務器也只可以配到64顆CPU(在IBM只支持最多32顆CPU的時候,HP和Sun的服務器就有可以支持到128顆的配置了,當然可能當時的操作系統并不支持這么多,需要分區后才能使用,一個分區最多64顆CPU)。IBM的一種解釋是這樣可以降低軟件License的費用(因為現在大部分UNIX服務器軟件都是按照CPU數量收費的);另一方面,IBM的POWER 5 CPU確實擁有很高的處理能力,可以以一敵二(至少現在的TPCC測試結果是這樣),能夠讓IBM的銷售代表理直氣壯地任意解釋。
2.4.2 Cluster群集技術
群集技術是實現并行(MP)的另一種方法,通常指多個操作系統內核通過群集管理軟件或者并行計算應用軟件進行并行處理,實現高性能計算或者故障恢復。而SMP技術則使用單一操作系統映像(內核),由支持SMP的操作系統進行任務分配和調度。
由于SMP需要特別的硬件設計,Cluster則一般使用軟件編程就可以實現,所以從實現成本考慮,Cluster技術在深度計算(deep computing)/高性能計算HPC(high performance computing)上占據非常高的市場份額,越來越多的高性能計算機不是采用數量少,CPU數多的高端SMP計算機,而是采用只有少量CPU的廉價機進行疊加,依靠數量眾多的計算機組成的群進行計算,由應用軟件切分任務,通過網絡進行任務發送和結果回收,例如Linux群集。這一類群集技術的缺點是要求軟件能對任務進行很好地切分,否則無法實現并行計算的能力。
隨著CPU之間的耦合程度不同,從最緊的SMP到最松的軟件群集技術,中間還有一類過渡技術,典型的代表被稱為NUMA(Non-Uniform Memory Access)。與共享everything(CPU、內存、存儲、網絡對程序完全對等,沒有區別)的SMP技術不同,也與什么都不共享(share nothing)的軟件群集技術不同,NUMA將內存分為幾個層次:第一層內存被單一CPU獨占,第二層內存被2~4個CPU共享,第三層內存被更多的CPU共享,不同層次內存之間依靠類似Cache控制的機制進行協調。與SMP的L1/L2/L3 Cache機制的最大不同在于,對于同一塊內存,和不同CPU的“遠、近”是不同的,而SMP則不存在這種遠近的差別。現在已經沒有多CPU計算機是純粹的SMP架構了,都或多或少引入(或借鑒)了NUMA的機制。
提高系統的性能有多種方式,首先是提高單一CPU的性能(一般是提高主頻或CPU更新換代)、然后通過SMP(增加操作系統中CPU個數),之后是NUMA(可以稱為多核+SMP技術的組合),再之后是(軟件)群集,系統的性能提高線性度越來越差,但是實現成本越來越低,允許的并行節點(CPU)數也越來越多。
除了負載分擔,群集的另外一個作用是提高系統的冗余度,實現更高的可用性。高可用是另外一個比較復雜的技術,IBM小型機采用的是HACMP軟件實現雙(多)機之間進行故障保護,HACMP的技術綜合利用了AIX操作系統的各種功能,作者將在另一本書《解密IBM群集技術》中專題討論。