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為例: