NUMA技術

NUMA(Non Uniform Memory AccessArchitecture)技術可以使衆多服務器像單一系統那樣運轉,同時保留小系統便於管理和編程的優點。

 

            非統一內存訪問是一種用於多處理器的電腦記憶體設計,內存訪問時間取決於處理器的內存位置,在NUMA下,處理器訪問它自己的本地存儲器的速度比非本地存儲器(存儲器的地方到另一個處理器之間共享的處理器或存儲器)快一些。

 

            現代計算機處理速度比它的主存快不少,而在早期的計算和數據處理中,CPU通常比它的主存慢。從二十世紀六十年代,處理器和存儲器的性能達到平衡。自那時起,CPU常常對數據感到飢餓而且必須等待處理器的數據到來。爲了解決這個問題,8090年代的超級計算機設計專注於提供高速的存儲器訪問,使得計算機能夠高速地處理其他系統不能處理的大數據集。

 

            沒有使用NUMA技術的多處理器系統,在同一時間只能有一個處理器訪問計算機的存儲器,所以在一個系統中可能存在多個處理器在等待訪問存儲器。NUMA通過提供分離的存儲器給各個處理器,避免多個處理器訪問同一個存儲器造成的性能損失,對於涉及到分散的數據的應用(在服務器和類似於服務器的應用中很常見),NUMA可以通過一個共享的存儲器提高性能至n倍,而n大約是處理器(或者分離的處理器)的個數。當然,並不是所有的數據都侷限於一個任務,所以多個處理器可能需要一個數據,爲了處理這種情況,NUMA系統包含了附件的軟件或者硬件來移動不同存儲器的數據,這個操作降低了對於這些存儲器的處理器的性能。

 

            當今數據計算領域的主要應用程序和模型可大致分爲聯機事務處理(OLTP)、決策支持系統(DSS)和企業信息通訊(BusinessCommunications)三大類。而小型獨立服務器模式、SMP(對稱多處理)模式、MPP(大規模並行處理)模式和NUMA模式。

 

NUMA模式採用分佈式存儲器模式,不同的是所有節點中的處理器可以訪問全部系統物理存儲器,然而每個處理器訪問本節點內的存儲器所需要的時間可能比訪問某些遠程節點內的存儲器所花的時間要少得多,換句話說,訪問存儲器的時間是不一致的,這也是該模式被稱爲“NUMA”的原因。簡而言之,NUMA既保持了SMP模式單一操作系統拷貝、簡便的應用程序變成模式以及易於管理的特點,又繼承了MPP模式的可擴充性,可以有效地擴充系統的規模,這也是NUMA的優勢所在。【1】

 

NUMA把一臺計算機分成多個節點(node),每個節點內部擁有多個CPU,內部節點使用共同的內存控制器,節點之間是通過互聯模塊進行連接和信息交互。因此節點的所有內存對於本節點的所有CPU都是等同的,對於其他節點中的所有CPU都不同,因此每個CPU可以訪問整個系統內存,但是訪問本節點內的內存速度最快(不經過互聯模塊),訪問非本節點的內存速度較慢(需要經過互聯模塊),即CPU訪問內存的速度和節點的距離有關,該距離成爲NodeDistance。

 

查看當前NUMA的節點情況;

 

numactl –hardware

 

或者

 

numactl –H

 

 

 

 

NUMA內存的分配策略有四種:

 

1)  缺省(default):總是在本地節點分配(當前進程運行的節點上)

 

2)  綁定(bind):強制分配到指定節點上

 

3)  交叉(interleavel):在所有節點或者指定節點上交叉分配內存

 

4)  優先(preferred):在指定節點上分配,失敗則在其他節點上分配。

 

查看當前系統NUMA策略:

 

numactl –show

 

或者

 

numactl –s

 

 

因爲分配策略是default,總是在進程所在的節點分配,可能導致不同節點間內存分配不均衡的現象,當某個CPU節點內存不足時,會導致swap產生(所謂swap,是指內存空間不夠用時,將部分內存上的數據交換到swap空間上)。【2】

 

NUMA的一些常用操作可以在numactl命令(http://linux.51yip.com/search/numactl)中找到

 

 

參考資料:

 

【1】       https://baike.baidu.com/item/NUMA/6906025

 

【2】       https://www.cnblogs.com/songyuejie/p/6795312.html

 

【3】       http://linux.51yip.com/search/numactl

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章