您好,登錄后才能下訂單哦!
如何進行numa架構與性能的解析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
說到服務器的NUMA架構,大家或許都知道。NUMA架構在中大型系統上一直非常盛行,也是高性能的解決方案,尤其在系統延遲方面表現都很優秀。但NUMA架構對服務器的相關性能到底有什么影響,怎樣設置會更好呢?小編在此解析一下。
1、什么是NUMA
NUMA(Non Uniform Memory Access Architecture)是一種用于多處理器的電腦記憶體設計,內存訪問時間取決于處理器的內存位置。 在NUMA下,處理器訪問它自己的本地存儲器的速度比非本地存儲器(存儲器的地方到另一個處理器之間共享的處理器或存儲器)快一些。
NUMA架構在邏輯上遵循對稱多處理(SMP)架構。 它是在二十世紀九十年代被開發出來的,開發商包括Burruphs (優利系統), Convex Computer(惠普),意大利霍尼韋爾信息系統(HISI)的(后來的Group Bull),Silicon Graphics公司(后來的硅谷圖形),Sequent電腦系統(后來的IBM),通用數據(EMC), Digital (后來的Compaq ,HP)。 這些公司研發的技術后來在類Unix操作系統中大放異彩,并在一定程度上運用到了Windows NT中。
NUMA 的主要優點是伸縮性。NUMA 體系結構在設計上已超越了 SMP 體系結構在伸縮性上的限制。通過 SMP,所有的內存訪問都傳遞到相同的共享內存總線。這種方式非常適用于 CPU 數量相對較少的情況,但不適用于具有幾十個甚至幾百個 CPU 的情況,因為這些 CPU 會相互競爭對共享內存總線的訪問。NUMA 通過限制任何一條內存總線上的 CPU 數量并依靠高速互連來連接各個節點,從而緩解了這些瓶頸狀況。
2、NUMA的幾種架構方案
NUMA 系統通常比一致內存訪問系統(UMA)更加經濟且性能更高。一致內存訪問系統必須平等地為所有 CPU 提供內存,而 NUMA 系統則能夠為直接連接到 CPU 的內存提供高速互連,同時為與 CPU 相隔較遠的內存提供較為便宜但更高延遲的連接。
使用 NUMA 時,會經常遇到下面幾種方案,以SQL SERVER數據庫為例。(參閱technet資料)
A. 沒有端口到 NUMA 的關聯
這是具有硬件 NUMA 和單個 SQL Server 實例的計算機中的默認設置。所有通信流量都通過一個單獨的端口輸入并采用循環方式分布到任何可用的 NUMA 節點。NUMA 增大了內存和 CPU 訪問的區域并增加了 I/O 和惰性編寫器線程的數量。在建立連接后會立即將其作用域限定為此節點。它提供了 NUMA 節點間的自動負載平衡。客戶端應用程序可以連接到單個端口,而且可以輕松地進行部署。
將一個端口關聯到多個用于主要應用程序的硬件 NUMA 節點。將第二個端口關聯到另一個用于第二個次要應用程序的硬件 NUMA 節點。用于這兩個應用程序的內存和 CPU 資源量非常不平衡,用于主要應用程序的本地內存和 CPU 資源量是用于次要應用程序的三倍。次要應用程序可以是數據庫引擎的第二個實例,它在同一數據庫引擎實例中,甚至在同一數據庫中提供次要的功能。通過向優先使用的連接提供額外資源,它提供了一種線程優先執行的方式。
可以將多個端口映射到同一 NUMA 節點。這樣,您就可以為不同的端口配置不同的權限。例如,您可以通過控制對相應 TCP 端點的權限來嚴格限制由某個端口提供的訪問。在此示例中,端口 1450 在 Intranet 上普遍可用。端口 1433 則設置為通過防火墻連接到 Internet,并對它的訪問進行嚴格的限制。兩個端口都可以充分、平等、安全地利用 NUMA。
3、如何設置,遵循什么原則
那么在虛擬化場景中,如何設置NUMA呢?原則是什么?
例如一臺配置了兩顆八核處理器以及128GB內存的服務器,我們需要在其上分配CPU和內存資源并劃分虛機。
首先在NUMA架構中,每個處理器能夠控制64GB的物理內存,每個處理器的八個核心中的每個核心將對應一個8GB的NUMA節點。這將會如何影響虛擬機性能?由于每個處理器核心訪問NUMA節點內內存的速度要比其他節點快,因此當虛擬機內存大小少于或者等于NUMA節點的內存大小時,虛擬機在理論上能夠獲得最好的性能。如果給虛擬機分配更多的內存,則虛擬機必然要訪問其NUMA節點之外的部分內存,這樣或多或少會影響其性能。如果應用能夠感知NUMA,那就更好了。vSphere使用vNUMA可以創建能夠感知NUMA的虛擬機。該虛擬機將會被分割為虛擬NUMA節點,每個vNUMA節點將會被放置到一個不同的物理NUMA節點。盡管虛擬機仍舊在兩個NUMA節點之間擴展,但虛擬機內的操作系統和應用能夠感知NUMA,資源使用將會得到優化。
NUMA現已經對在數據中心服務器上安裝及選擇內存的方式帶來了很多改變。在給服務器增加物理內存時,我們需要注意增加的內存要在NUMA節點之間進行平衡及匹配以使主板上的每個處理器擁有相同的內存。如果在我們所舉例的服務器上配置更多的內存,那么必須在處理器之間平衡這些內存模塊。如果增加64GB的內存,那么每個處理器將分配到32GB的內存(每個處理器可支配的內存將增加到96GB,服務器總內存數將達到192GB),每個NUMA節點的內存大小將從8GB增加到12GB。由于每個Socket控制的內存插槽是不同的,因此要確保內存插槽是均勻的。例如192G內存分為12個16G的內存條,那么應該4個插在一個Socket的內存插槽中,另8個插在另兩個socket的內存插槽中。在為虛機分配vCPU資源時,也盡可能按照Socket/Core的倍數分配,比如1X1, 1X2, 1X 4, 1X8, 2X1, 2X2, 2X4, 2X8等組合,但不要使用2X3, 2X5, 2X7這種組合。后面的組合會引起跨Socket的內存調用,從而容易導致性能下降。
結合實踐,不同的業務對內存會有不同的要求,但最好不要跨NUMA單元去進行調用,盡可能的使每個CPU訪問它的直連內存單元。遵循這些簡單的原則,就會使性能更好。
關于如何進行numa架構與性能的解析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。