程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 簡介SQL SERVER中的NUMA架構

簡介SQL SERVER中的NUMA架構

編輯:關於SqlServer

SQL Server Data Tools – Business Intelligence for Visual Studio 2012安裝時提示“The CPU architecture....”的解決方法

就目前而言,CPU主頻速度的迅速提升以及CPU數量的高速增長,並沒有能夠促使CPU在訪問內存時的速度有所長進。

盡管L3 Cache的提出解決了部分問題,不過,CPU訪問內存速度慢的現象並未有所改觀,瓶頸依然存在。

為了更有效的解決CPU訪問內存的速度問題,工業界引入了NUMA概念

首先介紹一下 NUMA  的架構,如下圖:

每個 NUMA 節點(硬件 NUMA 或軟件 NUMA)都有一個用於處理網絡 I/O 的相關 I/O 完成端口,這有助於跨多個端口分布網絡 I/O 處理

上述結構中展現出兩個NUMA結點,每個NUMA結點有一些CPU, 一個內部總線,和自己的內存,甚至可以有自己的IO。每個CPU有離自己最近的內存可以直接訪問。

所以,使用NUMA架構,系統的性能會更佳。值得注意的是,在NUMA結構下,可以比較方便的增加CPU的數目。

而在非NUMA架構下,增加CPU會導致系統總線負載很重,性能提升不明顯。

雖然每個CPU也可以訪問其他NUMA結點上的內存,但付出的代價則是導致速度更慢,這是要盡量避免的。

應用軟件如果沒有意識到這種結構,在NUMA機器上,有時候性能會更差,這是因為,他們經常會不自覺的去訪問遠端內存,從而導致整體性能下降。

通常而言,NUMA架構也有硬件和軟件之分。

一、硬件NUMA

硬件NUMA是在硬件層面上得以支持。如何才能知道本機是否有硬件NUMA呢? 最好的辦法是問硬件供應商了。

但如果想知道機器中有多少個NUMA結點,那就可以在SQL Server Management Studio下用如下的查詢,看能返回幾個NUMA結點

1SELECTDISTINCT memory_node_id FROM sys.dm_os_memory_clerks

或者,可以查看SQL Server的錯誤日志,如下面的錯誤日志表明,系統有兩個NUMA結點

從 SQL Server 2000 SP3 以後,SQL Server開始支持NUMA架構,內存訪問會盡量使用離CPU最近的內存,以提高性能。

二、軟件NUMA

如果硬件本身不支持NUMA,還可以在軟件層面上設置NUMA,如機器有4個CPU, 設成兩個NUMA NODE

一個NODE占用CPU 0x11 (二進制編碼),另外一個NODE占用CPU 0x1100 (二進制編碼)。

那麼,可以在注冊表上做如下修改,以SQL Server 2008為例:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved