六、CPU优化(4)NUMA架构
一、服務器系統架構
從系統架構來看,目前的商用服務器大體可以分為以下三類
1.?即對稱多處理器結構(SMP:Symmetric?Multi-Processor),,
在SMP架構中,每個CPU對稱工作,各CPU共享相同的物理內存,每個?CPU訪問內存中的任何地址所需時間是相同的,因此SMP也被稱為一致存儲器訪問結構(UMA:Uniform?Memory?Access)。
對SMP服務器進行擴展的主要方法有:增加內存、更高的CPU工作頻率、添加CPU、改善I/O性能。?
但是,SMP架構中的所有資源(CPU、內存、I/O等)都是共享的,導致了它的擴展能力非常有限。最受限制的則是內存,由于每個CPU必須通過相同的內存總線訪問相同的內存資源,因此隨著CPU數量的增加,內存訪問沖突將迅速增加,最終會造成CPU資源的浪費,使?CPU性能的有效性大大降低。實驗證明,SMP架構時,CPU利用率最好的情況是2至4個CPU。
?
?
2.?大規模并行處理結構(MPP:Massive?Parallel?Processing)
由多個SMP服務器(每個SMP服務器稱節點)通過節點互聯網絡連接而成,每個節點只訪問自己的本地資源(內存、存儲等),是一種完全無共享(Share?Nothing)結構,因而擴展能力最好,理論上其擴展無限制,目前的技術可實現512個節點互聯,數千個CPU。目前業界對節點互聯網絡暫無標準,如?NCR的Bynet,IBM的SPSwitch,它們都采用了不同的內部實現機制。但節點互聯網僅供MPP服務器內部使用,對用戶而言是透明的。
在MPP系統中,每個SMP節點也可以運行自己的操作系統、數據庫等。但是每個節點內的CPU不能訪問另一個節點的內存,節點之間的信息交互只能通過節點互聯網絡實現。?
但是MPP服務器還需要一種復雜的機制來調度和平衡各個節點的負載和并行處理過程。目前一些基于MPP技術的服務器往往通過系統級軟件(如數據庫)來屏蔽這種復雜性。舉例來說,NCR的Teradata就是基于MPP技術的一個關系數據庫軟件,基于此數據庫來開發應用時,不管后臺服務器由多少個節點組成,開發人員所面對的都是同一個數據庫系統,而不需要考慮如何調度其中某幾個節點的負載。
SQL?Server?2008?R2?PDW(并行數據倉庫,之前稱之為“Madison”)版本采用MPP架構,可以對大型數據表進行分區,并將分區存儲在多個物理節點當中,每一個節點均有其獨占的CPU資源、內存資源、以及存儲資源,并且各自運行獨立的SQL?Server實例,這種模型稱之為Ultra?Shared?Nothing。所有組件彼此間都是平衡的,從而消除了性能瓶頸。
MPP的節點互聯機制是在不同的SMP服務器外部通過I/O?實現的,每個節點只訪問本地內存和存儲,節點之間的信息交互與節點本身的處理是并行進行的。因此MPP在增加節點時性能基本上可以實現線性擴展。
?
?
3.?非一致內存訪問結構(NUMA:Non-Uniform?Memory?Access)
?
在NUMA架構中有多個CPU模塊,每個CPU模塊由多個CPU組成,并且具有獨立的本地內存、I/O槽口等。由于其節點之間可以通過互聯模塊(如稱為Crossbar?Switch)進行連接和信息交互,因此每個CPU可以訪問整個系統的內存。顯然,訪問本地內存的速度將遠遠高于訪問遠地內存(系統內其它節點的內存)的速度,這也是非一致內存訪問的由來。
從架構來看,NUMA與MPP具有許多相似之處:它們都由多個節點組成,每個節點都具有自己的CPU、內存、I/O,節點之間都可以通過節點互聯機制進行信息交互。但是又有很大的不同:
(1)節點互聯機制
NUMA的節點互聯機制是在同一個物理服務器內部實現的,當某個CPU需要進行遠地內存訪問時,它必須等待,這也是NUMA服務器無法實現CPU增加時性能線性擴展的主要原因。
(2)內存訪問機制
在NUMA服務器內部,任何一個CPU可以訪問整個系統的內存,但遠地訪問的性能遠遠低于本地內存訪問,因此在開發應用程序時應該盡量避免遠地內存訪問。?
?
?
二、NUMA的優勢與局限性
1.?優勢
利用NUMA技術,可以較好地解決原來SMP系統的擴展問題,在一個物理服務器內可以支持上百個CPU。比較典型的NUMA服務器的例子包括HP的Superdome、SUN15K、IBMp690等。
?
2.?局限性
在NUMA架構中,由于訪問遠地內存的延時遠遠超過本地內存,因此當CPU數量增加時,系統性能無法線性增加。由于這個特點,為了更好地發揮系統性能,開發應用程序時需要盡量減少不同CPU模塊之間的信息交互。
如HP公司發布Superdome服務器時,曾公布了它與HP其它UNIX服務器的相對性能值,結果發現,64路CPU的Superdome?(NUMA結構)的相對性能值是20,而8路N4000(共享的SMP結構)的相對性能值是6.3。從這個結果可以看到,8倍數量的CPU換來的只是3倍性能的提升。
?
?
三、處理器組
NUMA可以解決手動配置處理器組。
?
?
四、SQL?Server中的NUMA
SQL?Server?2000?SP4?開始對NUMA提供有限的?NUMA?支持,SQL?Server?2005?有了大量重要的改進。SQL?Server?2008對NUMA完全支持和優化,內存訪問會盡量使用離CPU最近的內存,以提高性能。
《SQL?Server?如何支持?NUMA》?http://msdn.microsoft.com/zh-cn/library/ms180954(v=SQL.105).aspx
?
1.?CPU編號
2個物理CPU,4核,超線程,總共為2*4*2=16個邏輯CPU。如下圖所示:
?
2.?SSMS中查看NUMA
?
3.?任務管理器中查看CPU負載
在此實驗中,運行了一個較大負荷的SQL?Server查詢,然后在任務管理器中查看,可見大多數的操作都在集中在某一個NumaNode執行。
?
五、SQL?Server?中的軟件NUMA
推薦使用硬件NUMA,因這它是在硬件層面上得以支持。如何才能知道本機是否有硬件NUMA呢??最好的辦法是問硬件供應商了。
如果硬件本身不支持NUMA,還可以在軟件層面上設置NUMA。?http://www。e800。com。cn/articles/2011/1116/498746.shtml
軟件NUMA只是對CPU進行分組,并不會改變內存。因此對于內存來講,還是只有一個節點,所以兩個NUMA節點訪問的都是同一塊內存。而增加軟件NUMA結點的好處在于,SQL?Server會針對每一個軟件NUMA結點,多一個LazyWriter的線程,如果系統在LazyWriter上是性能瓶頸的話,引入軟件NUMA則可以有效提升性能。
?
?
本文結語:
通過NUMA技術,可以擴展性能,在一個物理服務器內可以支持上百個CPU。使用硬件NUMA,請咨詢硬件供應商。
?
總結
以上是生活随笔為你收集整理的六、CPU优化(4)NUMA架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UIKeyboardTypeNumber
- 下一篇: (转)Android中截取当前屏幕图片