NUMA架構(gòu)
最近在學(xué)習(xí).NET的并行計(jì)算技術(shù),學(xué)到一個(gè)服務(wù)器NUMA架構(gòu),,NUMA架構(gòu)在中大型系統(tǒng)上一直非常盛行,,也是高性能的解決方案,在系統(tǒng)延遲方面表現(xiàn)都很優(yōu)秀,。Windows一向都沒有在NUMA架構(gòu)上有多少表現(xiàn)機(jī)會(huì),,AMD的多路系統(tǒng)大多也會(huì)用在UNIX/Linux上。Intel如期進(jìn)入了NUMA架構(gòu)的懷抱,,英特爾最新的服務(wù)器處理器至強(qiáng)5500是一項(xiàng)重大的結(jié)構(gòu)變革,。與上一代至強(qiáng)處理器相比,至強(qiáng)5500采用了非一致性存儲(chǔ)結(jié)構(gòu)(NUMA),,它在一塊芯片上增加了向內(nèi)存控制器的并行化訪問路徑增加非統(tǒng)一內(nèi)存訪問,。可以看這篇文章三款Nehalem至強(qiáng)5500塔式服務(wù)器橫評(píng)對決,。Windows Server 2003 在線程調(diào)度程序和內(nèi)存管理器中引入了 NUMA 優(yōu)化,,而 Windows Server 2008 在 I/O 管理器中添加了 NUMA 優(yōu)化同時(shí)擴(kuò)展了內(nèi)存管理器的 NUMA 優(yōu)化。NUMA 系統(tǒng)通常是多處理器系統(tǒng),,其中的內(nèi)存延遲隨訪問它的處理器不同而有所不同,。內(nèi)存被分成多個(gè)節(jié)點(diǎn),CPU 和節(jié)點(diǎn)之間的延遲可能各不相同,,并且每個(gè) CPU 都被視為它可最快訪問的那個(gè)節(jié)點(diǎn)的一部分,。Windows 7 和 Windows Server 2008 R2 一個(gè)重要更新是增強(qiáng)了對多核的支持。 現(xiàn)已可以支持超過64個(gè)邏輯處理器(也就是所謂的“核”),,并且引入了NUMA 技術(shù),, 大幅度提高多核運(yùn)算的性能,。可以說Windows 7/Server 2008 R2已經(jīng)進(jìn)入高端的企業(yè)級(jí)市場,。
傳統(tǒng)的多核運(yùn)算是使用SMP(Symmetric Multi-Processor )模式:將多個(gè)處理器與一個(gè)集中的存儲(chǔ)器和I/O總線相連,。所有處理器只能訪問同一個(gè)物理存儲(chǔ)器,因此SMP系統(tǒng)有時(shí)也被稱為一致存儲(chǔ)器訪問(UMA)結(jié)構(gòu)體系,,一致性意指無論在什么時(shí)候,,處理器只能為內(nèi)存的每個(gè)數(shù)據(jù)保持或共享唯一一個(gè)數(shù)值。很顯然,,SMP的缺點(diǎn)是可伸縮性有限,,因?yàn)樵诖鎯?chǔ)器和I/O接口達(dá)到飽和的時(shí)候,增加處理器并不能獲得更高的性能,。
NUMA模式是一種分布式存儲(chǔ)器訪問方式,,處理器可以同時(shí)訪問不同的存儲(chǔ)器地址,大幅度提高并行性,。 NUMA模式下,,處理器被劃分成多個(gè)"節(jié)點(diǎn)"(node),, 每個(gè)節(jié)點(diǎn)被分配有的本地存儲(chǔ)器空間,。 所有節(jié)點(diǎn)中的處理器都可以訪問全部的系統(tǒng)物理存儲(chǔ)器,但是訪問本節(jié)點(diǎn)內(nèi)的存儲(chǔ)器所需要的時(shí)間,,比訪問某些遠(yuǎn)程節(jié)點(diǎn)內(nèi)的存儲(chǔ)器所花的時(shí)間要少得多,。
NUMA 系統(tǒng)(尤其是具有超過八個(gè) CPU 的系統(tǒng))通常比一致內(nèi)存訪問系統(tǒng)更加經(jīng)濟(jì)且性能更高。一致內(nèi)存訪問系統(tǒng)必須平等地為所有 CPU 提供內(nèi)存,,而 NUMA 系統(tǒng)則能夠?yàn)橹苯舆B接到 CPU 的內(nèi)存提供高速互連,,同時(shí)為與 CPU 相隔較遠(yuǎn)的內(nèi)存提供較為便宜但更高延遲的連接。
為能在 NUMA 系統(tǒng)中有效擴(kuò)展,,操作系統(tǒng)或應(yīng)用程序必須了解節(jié)點(diǎn)拓?fù)浣Y(jié)構(gòu),,以便使計(jì)算能夠在包含計(jì)算數(shù)據(jù)和代碼的內(nèi)存附近執(zhí)行。例如,,Windows 調(diào)度程序?yàn)槊總€(gè)線程分配一個(gè)所謂的理想處理器,,該處理器是調(diào)度程序試圖始終在其上執(zhí)行該線程的 CPU。這樣做可以使線程置于 CPU 緩存中的數(shù)據(jù)能夠盡可能地在每次該線程運(yùn)行時(shí)可用,。
NUMA 的主要優(yōu)點(diǎn)是伸縮性,。NUMA 體系結(jié)構(gòu)在設(shè)計(jì)上已超越了 SMP 體系結(jié)構(gòu)在伸縮性上的限制。通過 SMP,,所有的內(nèi)存訪問都傳遞到相同的共享內(nèi)存總線,。這種方式非常適用于 CPU 數(shù)量相對較少的情況,但不適用于具有幾十個(gè)甚至幾百個(gè) CPU 的情況,,因?yàn)檫@些 CPU 會(huì)相互競爭對共享內(nèi)存總線的訪問,。NUMA 通過限制任何一條內(nèi)存總線上的 CPU 數(shù)量并依靠高速互連來連接各個(gè)節(jié)點(diǎn),,從而緩解了這些瓶頸狀況。
SQL Server 2005開始支持NUMA,,可參考SQL Server 2008的NUMA支持,,NUMA架構(gòu)對數(shù)據(jù)庫性能的影響可以參考DBA notes同學(xué)寫的NUMA 架構(gòu)與數(shù)據(jù)庫性能。
參考資料:
出處:http://shanyou.cnblogs.com/
版權(quán):本文版權(quán)歸作者和博客園共有
轉(zhuǎn)載:歡迎轉(zhuǎn)載,,為了保存作者的創(chuàng)作熱情,,請按要求【轉(zhuǎn)載】,謝謝
要求:未經(jīng)作者同意,,必須保留此段聲明,;必須在文章中給出原文連接;否則必究法律責(zé)任