NUMA架構介紹及優缺點分析

天翼雲開發者社群發表於2023-05-11

本文分享自天翼雲開發者社群《 NUMA架構介紹及優缺點分析 》,作者 : ****航 https://www.ctyun.cn/developer/article/415653655711813



一、 什麼是NUMA架構

1、概念

NUMA(Non-Uniform Memory Access,非統一記憶體訪問)架構是一種針對多處理器系統的記憶體組織方式。在這種架構中,處理器被分配到不同的節點,每個節點擁有自己的本地記憶體。處理器可以訪問本地記憶體和其他節點的記憶體,但訪問本地記憶體的速度要快於訪問其他節點的記憶體。

 

2、設計原理

NUMA架構的設計原理主要是為了解決多處理器系統中的記憶體訪問瓶頸問題。隨著處理器數量的增加,記憶體頻寬需求也會相應提高。然而,在傳統的統一記憶體訪問(UMA)架構中,所有處理器共享同一塊記憶體,導致記憶體訪問延遲增加、記憶體頻寬成為系統效能的瓶頸。NUMA架構透過將記憶體分配到各個節點,使處理器優先訪問本地記憶體,降低記憶體訪問延遲,提高了多處理器系統的效能。

 

3、結構特點

NUMA架構中,系統被劃分為多個節點,每個節點包含一個或多個處理器、本地記憶體和I/O裝置。節點之間透過高速互連網路進行通訊,如HyperTransport(AMD)或QuickPath Interconnect(Intel)等。每個處理器可以訪問本地記憶體和遠端記憶體,但訪問本地記憶體的速度更快。

 

二、NUMA架構的優點

1、擴充套件性

NUMA架構允許系統中的處理器和記憶體資源以節點為單位進行擴充套件,使得在增加處理器和記憶體時,可靈活地調整系統的規模。這使得NUMA架構的系統具有很高的擴充套件性,可以滿足從小型伺服器到大型高效能運算叢集等各種規模的平行計算需求。隨著處理器核數的增加,NUMA架構能夠更好地應對記憶體訪問的效能挑戰,從而實現線性或接近線性的效能提升。

 

2、區域性性

NUMA架構中,每個節點的處理器具有本地記憶體,處理器訪問本地記憶體的延遲較低。這種區域性性原則有助於減少記憶體訪問延遲,提高處理器之間的協同效能。透過充分利用區域性性原則,作業系統和應用程式可以實現更高效的任務排程和記憶體分配策略,從而進一步提升NUMA系統的效能。

 

3、負載均衡

NUMA系統中,各個節點都擁有自己的處理器和本地記憶體,這使得處理器能夠在不同節點間分散負載。透過對任務和記憶體的分散式管理,可以實現負載均衡,從而提高系統整體效能。特別是在高併發、大規模資料處理等場景下,負載均衡機制可以有效地避免單個節點的資源瓶頸問題,確保系統資源得到充分利用。

 

4、並行效能

NUMA架構透過將記憶體資源分配到各個節點,降低了記憶體訪問爭用,提高了記憶體頻寬。在多處理器平行計算場景下,這種設計有助於提高並行效能。對於具有大量資料交換的計算任務,NUMA架構可以充分發揮各個處理器之間的平行計算能力,實現效能的最佳化。

 

三、NUMA架構的缺點

1、軟體相容性

為了充分發揮NUMA架構的效能優勢,作業系統和應用程式需要具備NUMA感知能力。這意味著軟體開發者需要投入更多精力進行最佳化和除錯,以確保其應用程式在NUMA架構系統上能夠實現高效能執行。對於那些非NUMA感知的應用程式,效能可能無法達到最-佳。

 

2、記憶體碎片化

NUMA系統中,記憶體資源可能分佈在不同的節點上,導致記憶體碎片化問題。尤其是在處理大規模資料時,記憶體碎片化可能導致記憶體利用率降低,甚至影響系統效能。

 

3、成本

與統一記憶體訪問(UMA)架構相比,NUMA架構的硬體成本較高。這是因為NUMA系統需要額外的硬體來支援節點間的通訊和協調,例如高速互連網路和記憶體控制器等。此外,NUMA架構對作業系統和應用程式的最佳化要求較高,可能導致軟體開發成本增加。因此,在選擇NUMA架構時,需要權衡其效能優勢與成本投入。

 

4、複雜性

NUMA架構引入了節點概念,使得系統設計和管理變得更加複雜。這包括硬體層面的節點通訊和協調,以及軟體層面的任務排程和記憶體管理等。為了充分利用NUMA架構的優勢,系統管理員和開發者需要具備較高的技術能力,以應對NUMA架構帶來的挑戰。

 

總結起來,NUMA架構雖然在效能和擴充套件性方面具有優勢,但也存在一定的缺點,如軟體相容性問題、記憶體碎片化、成本較高和系統複雜性等。在實際應用中,需要根據具體的需求和場景綜合考慮是否選擇使用NUMA架構。

 

四、與其他記憶體架構的對比

1、與UMA(Uniform Memory Access,統一記憶體訪問)架構對比:

UMA架構是一種所有處理器共享同一塊記憶體的記憶體訪問方式。在UMA架構中,處理器訪問記憶體的延遲是一致的,這使得記憶體訪問更加簡單。然而,隨著處理器數量的增加,UMA架構中的記憶體訪問效能可能受到限制,因為所有處理器都需要透過同一個記憶體匯流排訪問記憶體。相較之下,NUMA架構透過分配本地記憶體降低了記憶體訪問延遲,提高了效能,但需要應用程式和作業系統具有NUMA感知能力。在實際應用中,UMA架構可能更適用於處理器數量較少的場景,而NUMA架構在處理器數量較多的場景中具有優勢。

 

2、與cc-NUMA(Cache-coherent NUMA,一致性快取非統一記憶體訪問)架構對比:

cc-NUMA架構是NUMA架構的一種改進,它在NUMA的基礎上引入了快取一致性協議(如MESI、MOESI等),以確保不同節點之間的資料一致性。相較於傳統的NUMA架構,cc-NUMA架構在保持擴充套件性和效能優勢的同時,解決了資料一致性的問題。然而,cc-NUMA架構的硬體複雜度和成本相對較高,因為它需要實現更為複雜的快取一致性協議和通訊機制。在實際應用中,cc-NUMA架構可能更適用於對資料一致性要求較高的場景。

 

綜上所述,在不同的記憶體架構之間,NUMA架構在處理器數量較多、平行計算和高效能運算場景中具有優勢。相較於UMA架構,NUMA架構透過將記憶體資源分配到各個節點,降低了記憶體訪問延遲,提高了效能。然而,這也需要應用程式和作業系統具有NUMA感知能力,以充分發揮其優勢。與cc-NUMA架構相比,傳統的NUMA架構在硬體複雜度和成本方面具有一定優勢,但可能無法滿足對資料一致性要求較高的場景。

 

在實際應用中,不同的記憶體架構適用於不同的場景和需求。在選擇適合的記憶體架構時,需要綜合考慮處理器數量、效能需求、資料一致性要求、成本和軟體相容性等因素。對於大規模平行計算和高效能運算場景,NUMA架構可能是一個較為合適的選擇。然而,在處理器數量較少或對資料一致性要求較高的場景中,UMA或cc-NUMA架構可能更為適用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2951518/,如需轉載,請註明出處,否則將追究法律責任。

相關文章