muma
介紹
非一致內(nèi)存訪問(wèn)——NU介紹
非一致內(nèi)存訪問(wèn)——NUMA
Microsoft Microsoft SQL Server 能識(shí)別非一致性內(nèi)存訪問(wèn) (NUMA),無(wú)需特殊配置便可在 NUMA 硬件上順利地執(zhí)行。隨著處理器時(shí)鐘速度的提高和處理器數(shù)量的增加,使用這種額外處理能力所需的內(nèi)存滯后時(shí)間越來(lái)越難以減少。為了避開(kāi)這一問(wèn)題,硬件供應(yīng)商提供了大型的 L3 緩存,但這只是一種有限的解決方案。NUMA 體系結(jié)構(gòu)為此問(wèn)題提供了可擴(kuò)展的解決方案。SQL Server 已設(shè)計(jì)為利用基于 NUMA 的計(jì)算機(jī)而無(wú)需更改任何應(yīng)用程序。[1]
概念
硬件已經(jīng)趨向使用多條系統(tǒng)總線,每條系統(tǒng)總線為一小組處理器提供服務(wù)。每組處理器都有自己的內(nèi)存,并可能有自己的 I/O 通道。但是,每個(gè) CPU 都可以通過(guò)一致的方式訪問(wèn)與其他組關(guān)聯(lián)的內(nèi)存。每個(gè)組稱為一個(gè)“NUMA 節(jié)點(diǎn)”。NUMA 節(jié)點(diǎn)中的 CPU 數(shù)量取決于硬件供應(yīng)商。訪問(wèn)本地內(nèi)存比訪問(wèn)與其他 NUMA 節(jié)點(diǎn)關(guān)聯(lián)的內(nèi)存快。這就是“非一致性內(nèi)存訪問(wèn)體系結(jié)構(gòu)”名稱的由來(lái)。
在 NUMA 硬件上,有些內(nèi)存區(qū)域與其他區(qū)域位于不同的物理總線上。由于 NUMA 同時(shí)使用本地內(nèi)存和外部?jī)?nèi)存,因此,訪問(wèn)某些內(nèi)存區(qū)域的時(shí)間會(huì)比訪問(wèn)其他內(nèi)存區(qū)域的要長(zhǎng)。“本地內(nèi)存”和“外部?jī)?nèi)存”通常用于引用當(dāng)前正在運(yùn)行的線程。本地內(nèi)存是指與當(dāng)前正在運(yùn)行線程的 CPU 位于同一節(jié)點(diǎn)上的內(nèi)存。任何不屬于當(dāng)前正在運(yùn)行的線程所在的節(jié)點(diǎn)的內(nèi)存均為外部?jī)?nèi)存。外部?jī)?nèi)存也稱為“遠(yuǎn)程內(nèi)存”。訪問(wèn)外部?jī)?nèi)存的開(kāi)銷(xiāo)與訪問(wèn)本地內(nèi)存的開(kāi)銷(xiāo)比率稱為 NUMA 比率。如果 NUMA 比率為 1,則它是對(duì)稱多處理 (SMP)。比率越高,訪問(wèn)其他節(jié)點(diǎn)內(nèi)存的開(kāi)銷(xiāo)就越大。不支持 NUMA 的 Windows 應(yīng)用程序(包括 SQL Server 2000 SP3 及更低版本)有時(shí)在 NUMA 硬件上的執(zhí)行效果非常差。
NUMA 的主要優(yōu)點(diǎn)是伸縮性。NUMA 體系結(jié)構(gòu)在設(shè)計(jì)上已超越了 SMP 體系結(jié)構(gòu)在伸縮性上的限制。通過(guò) SMP,所有的內(nèi)存訪問(wèn)都傳遞到相同的共享內(nèi)存總線。這種方式非常適用于 CPU 數(shù)量相對(duì)較少的情況,但不適用于具有幾十個(gè)甚至幾百個(gè) CPU 的情況,因?yàn)檫@些 CPU 會(huì)相互競(jìng)爭(zhēng)對(duì)共享內(nèi)存總線的訪問(wèn)。NUMA 通過(guò)限制任何一條內(nèi)存總線上的 CPU 數(shù)量并依靠高速互連來(lái)連接各個(gè)節(jié)點(diǎn),從而緩解了這些瓶頸狀況。
硬件 NUMA 與軟件 NUMA
NUMA 可以通過(guò)專(zhuān)用硬件(硬件 NUMA)或通過(guò)配置 SQL Server 內(nèi)存(軟件 NUMA),將內(nèi)存與 CPU 進(jìn)行匹配。在啟動(dòng)過(guò)程中,SQL Server 根據(jù)基本的操作系統(tǒng)和硬件配置或軟件 NUMA 設(shè)置對(duì)自身進(jìn)行配置。對(duì)于硬件 NUMA 和軟件 NUMA,當(dāng) SQL Server 通過(guò) NUMA 配置啟動(dòng)時(shí),SQL Server 日志會(huì)記錄每個(gè)節(jié)點(diǎn)以及 CPU 掩碼的多模式配置消息。
硬件
具有硬件 NUMA 的計(jì)算機(jī)包含多條系統(tǒng)總線,每條系統(tǒng)總線為一小組處理器提供服務(wù)。每組處理器都有自己的內(nèi)存,并可能有自己的 I/O 通道,但是每個(gè) CPU 都可以通過(guò)一致的方式訪問(wèn)與其他組關(guān)聯(lián)的內(nèi)存。每個(gè)組稱為一個(gè)“NUMA 節(jié)點(diǎn)”。NUMA 節(jié)點(diǎn)中的 CPU 數(shù)量取決于硬件供應(yīng)商。硬件制造商會(huì)告知您計(jì)算機(jī)是否支持硬件 NUMA。
如果具有硬件 NUMA,則它可能會(huì)配置為使用交錯(cuò)內(nèi)存而不使用 NUMA。在這種情況下,Windows 以及 SQL Server 都無(wú)法將其識(shí)別為 NUMA。請(qǐng)運(yùn)行以下查詢以查找可用于 SQL Server 的內(nèi)存節(jié)點(diǎn)數(shù):
如果 SQL Server 僅返回一個(gè)內(nèi)存節(jié)點(diǎn)(節(jié)點(diǎn) 0),則表示沒(méi)有硬件 NUMA,或者該硬件已配置為交錯(cuò)硬件(非 NUMA)。如果您認(rèn)為硬件 NUMA 配置不正確,則請(qǐng)與硬件供應(yīng)商聯(lián)系以啟用 NUMA。SQL Server 會(huì)在硬件 NUMA 有四個(gè)或少于四個(gè) CPU,并且至少一個(gè)節(jié)點(diǎn)只有一個(gè) CPU 時(shí),忽略 NUMA 配置。
軟件
SQL Server 允許您將 CPU 分組到稱為軟件 NUMA 的節(jié)點(diǎn)中。如果您有多個(gè) CPU 但沒(méi)有硬件 NUMA,則通常需要配置軟件 NUMA,但是您還可以使用軟件 NUMA 將硬件 NUMA 節(jié)點(diǎn)再細(xì)分為更小的組。只有 SQL Server 計(jì)劃程序和 SQL Server 網(wǎng)絡(luò)接口 (SNI) 才支持軟件 NUMA。內(nèi)存節(jié)點(diǎn)基于硬件 NUMA 創(chuàng)建,因此,不會(huì)受軟件 NUMA 的影響。例如,如果具有安裝了八個(gè) CPU 的 SMP 計(jì)算機(jī),并且創(chuàng)建了分別具有兩個(gè) CPU 的四個(gè)軟件 NUMA 節(jié)點(diǎn),則將只有一個(gè)為所有四個(gè) NUMA 節(jié)點(diǎn)提供服務(wù)的內(nèi)存節(jié)點(diǎn)。軟件 NUMA 不提供內(nèi)存與 CPU 的關(guān)聯(lián)。
軟件 NUMA 的優(yōu)點(diǎn)體現(xiàn)在:緩解了具有多個(gè) CPU 但沒(méi)有硬件 NUMA 的計(jì)算機(jī)上 I/O 和惰性編寫(xiě)器的瓶頸作用。每個(gè) NUMA 節(jié)點(diǎn)具有一個(gè) I/O 線程和一個(gè)惰性編寫(xiě)器線程。根據(jù)數(shù)據(jù)庫(kù)的使用情況,這些單個(gè)線程可能會(huì)具有明顯的性能瓶頸。如果配置四個(gè)軟件 NUMA 節(jié)點(diǎn),則可提供四個(gè) I/O 線程和四個(gè)惰性編寫(xiě)器線程,從而可以提高性能。
無(wú)法創(chuàng)建包含來(lái)自不同硬件 NUMA 節(jié)點(diǎn)的 CPU 的軟件 NUMA。例如,如果硬件具有八個(gè) CPU (0…7) 并且具有兩個(gè)硬件 NUMA 節(jié)點(diǎn)(0-3 和 4-7),則可以通過(guò)組合 CPU(0,1) 和 CPU(2,3) 來(lái)創(chuàng)建軟件 NUMA。無(wú)法使用 CPU (1, 5) 創(chuàng)建軟件 NUMA,但是可以使用 CPU 關(guān)聯(lián)將 SQL Server 實(shí)例與來(lái)自不同 NUMA 節(jié)點(diǎn)的 CPU 進(jìn)行關(guān)聯(lián)。因此,在上述示例中,如果 SQL Server 使用 CPU 0-3,則將只有一個(gè) I/O 線程和一個(gè)惰性編寫(xiě)器線程。如果在上述示例中,SQL Server 使用 CPU 1、2、5 和 6,則您將訪問(wèn)兩個(gè) NUMA 節(jié)點(diǎn)并具有兩個(gè) I/O 線程和兩個(gè)惰性編寫(xiě)器線程。
注意:有些硬件配置將共享 L3/L4 緩存之類(lèi)的公共資源。可以按照這些共享資源對(duì)處理器進(jìn)行分組,以創(chuàng)建軟件 NUMA 節(jié)點(diǎn)。MA
Microsoft Microsoft SQL Server 能識(shí)別非一致性內(nèi)存訪問(wèn) (NUMA),無(wú)需特殊配置便可在 NUMA 硬件上順利地執(zhí)行。隨著處理器時(shí)鐘速度的提高和處理器數(shù)量的增加,使用這種額外處理能力所需的內(nèi)存滯后時(shí)間越來(lái)越難以減少。為了避開(kāi)這一問(wèn)題,硬件供應(yīng)商提供了大型的 L3 緩存,但這只是一種有限的解決方案。NUMA 體系結(jié)構(gòu)為此問(wèn)題提供了可擴(kuò)展的解決方案。SQL Server 已設(shè)計(jì)為利用基于 NUMA 的計(jì)算機(jī)而無(wú)需更改任何應(yīng)用程序。[1]
概念
硬件已經(jīng)趨向使用多條系統(tǒng)總線,每條系統(tǒng)總線為一小組處理器提供服務(wù)。每組處理器都有自己的內(nèi)存,并可能有自己的 I/O 通道。但是,每個(gè) CPU 都可以通過(guò)一致的方式訪問(wèn)與其他組關(guān)聯(lián)的內(nèi)存。每個(gè)組稱為一個(gè)“NUMA 節(jié)點(diǎn)”。NUMA 節(jié)點(diǎn)中的 CPU 數(shù)量取決于硬件供應(yīng)商。訪問(wèn)本地內(nèi)存比訪問(wèn)與其他 NUMA 節(jié)點(diǎn)關(guān)聯(lián)的內(nèi)存快。這就是“非一致性內(nèi)存訪問(wèn)體系結(jié)構(gòu)”名稱的由來(lái)。
在 NUMA 硬件上,有些內(nèi)存區(qū)域與其他區(qū)域位于不同的物理總線上。由于 NUMA 同時(shí)使用本地內(nèi)存和外部?jī)?nèi)存,因此,訪問(wèn)某些內(nèi)存區(qū)域的時(shí)間會(huì)比訪問(wèn)其他內(nèi)存區(qū)域的要長(zhǎng)。“本地內(nèi)存”和“外部?jī)?nèi)存”通常用于引用當(dāng)前正在運(yùn)行的線程。本地內(nèi)存是指與當(dāng)前正在運(yùn)行線程的 CPU 位于同一節(jié)點(diǎn)上的內(nèi)存。任何不屬于當(dāng)前正在運(yùn)行的線程所在的節(jié)點(diǎn)的內(nèi)存均為外部?jī)?nèi)存。外部?jī)?nèi)存也稱為“遠(yuǎn)程內(nèi)存”。訪問(wèn)外部?jī)?nèi)存的開(kāi)銷(xiāo)與訪問(wèn)本地內(nèi)存的開(kāi)銷(xiāo)比率稱為 NUMA 比率。如果 NUMA 比率為 1,則它是對(duì)稱多處理 (SMP)。比率越高,訪問(wèn)其他節(jié)點(diǎn)內(nèi)存的開(kāi)銷(xiāo)就越大。不支持 NUMA 的 Windows 應(yīng)用程序(包括 SQL Server 2000 SP3 及更低版本)有時(shí)在 NUMA 硬件上的執(zhí)行效果非常差。
NUMA 的主要優(yōu)點(diǎn)是伸縮性。NUMA 體系結(jié)構(gòu)在設(shè)計(jì)上已超越了 SMP 體系結(jié)構(gòu)在伸縮性上的限制。通過(guò) SMP,所有的內(nèi)存訪問(wèn)都傳遞到相同的共享內(nèi)存總線。這種方式非常適用于 CPU 數(shù)量相對(duì)較少的情況,但不適用于具有幾十個(gè)甚至幾百個(gè) CPU 的情況,因?yàn)檫@些 CPU 會(huì)相互競(jìng)爭(zhēng)對(duì)共享內(nèi)存總線的訪問(wèn)。NUMA 通過(guò)限制任何一條內(nèi)存總線上的 CPU 數(shù)量并依靠高速互連來(lái)連接各個(gè)節(jié)點(diǎn),從而緩解了這些瓶頸狀況。
硬件 NUMA 與軟件 NUMA
NUMA 可以通過(guò)專(zhuān)用硬件(硬件 NUMA)或通過(guò)配置 SQL Server 內(nèi)存(軟件 NUMA),將內(nèi)存與 CPU 進(jìn)行匹配。在啟動(dòng)過(guò)程中,SQL Server 根據(jù)基本的操作系統(tǒng)和硬件配置或軟件 NUMA 設(shè)置對(duì)自身進(jìn)行配置。對(duì)于硬件 NUMA 和軟件 NUMA,當(dāng) SQL Server 通過(guò) NUMA 配置啟動(dòng)時(shí),SQL Server 日志會(huì)記錄每個(gè)節(jié)點(diǎn)以及 CPU 掩碼的多模式配置消息。
硬件
具有硬件 NUMA 的計(jì)算機(jī)包含多條系統(tǒng)總線,每條系統(tǒng)總線為一小組處理器提供服務(wù)。每組處理器都有自己的內(nèi)存,并可能有自己的 I/O 通道,但是每個(gè) CPU 都可以通過(guò)一致的方式訪問(wèn)與其他組關(guān)聯(lián)的內(nèi)存。每個(gè)組稱為一個(gè)“NUMA 節(jié)點(diǎn)”。NUMA 節(jié)點(diǎn)中的 CPU 數(shù)量取決于硬件供應(yīng)商。硬件制造商會(huì)告知您計(jì)算機(jī)是否支持硬件 NUMA。
如果具有硬件 NUMA,則它可能會(huì)配置為使用交錯(cuò)內(nèi)存而不使用 NUMA。在這種情況下,Windows 以及 SQL Server 都無(wú)法將其識(shí)別為 NUMA。請(qǐng)運(yùn)行以下查詢以查找可用于 SQL Server 的內(nèi)存節(jié)點(diǎn)數(shù):
如果 SQL Server 僅返回一個(gè)內(nèi)存節(jié)點(diǎn)(節(jié)點(diǎn) 0),則表示沒(méi)有硬件 NUMA,或者該硬件已配置為交錯(cuò)硬件(非 NUMA)。如果您認(rèn)為硬件 NUMA 配置不正確,則請(qǐng)與硬件供應(yīng)商聯(lián)系以啟用 NUMA。SQL Server 會(huì)在硬件 NUMA 有四個(gè)或少于四個(gè) CPU,并且至少一個(gè)節(jié)點(diǎn)只有一個(gè) CPU 時(shí),忽略 NUMA 配置。
軟件
SQL Server 允許您將 CPU 分組到稱為軟件 NUMA 的節(jié)點(diǎn)中。如果您有多個(gè) CPU 但沒(méi)有硬件 NUMA,則通常需要配置軟件 NUMA,但是您還可以使用軟件 NUMA 將硬件 NUMA 節(jié)點(diǎn)再細(xì)分為更小的組。只有 SQL Server 計(jì)劃程序和 SQL Server 網(wǎng)絡(luò)接口 (SNI) 才支持軟件 NUMA。內(nèi)存節(jié)點(diǎn)基于硬件 NUMA 創(chuàng)建,因此,不會(huì)受軟件 NUMA 的影響。例如,如果具有安裝了八個(gè) CPU 的 SMP 計(jì)算機(jī),并且創(chuàng)建了分別具有兩個(gè) CPU 的四個(gè)軟件 NUMA 節(jié)點(diǎn),則將只有一個(gè)為所有四個(gè) NUMA 節(jié)點(diǎn)提供服務(wù)的內(nèi)存節(jié)點(diǎn)。軟件 NUMA 不提供內(nèi)存與 CPU 的關(guān)聯(lián)。
軟件 NUMA 的優(yōu)點(diǎn)體現(xiàn)在:緩解了具有多個(gè) CPU 但沒(méi)有硬件 NUMA 的計(jì)算機(jī)上 I/O 和惰性編寫(xiě)器的瓶頸作用。每個(gè) NUMA 節(jié)點(diǎn)具有一個(gè) I/O 線程和一個(gè)惰性編寫(xiě)器線程。根據(jù)數(shù)據(jù)庫(kù)的使用情況,這些單個(gè)線程可能會(huì)具有明顯的性能瓶頸。如果配置四個(gè)軟件 NUMA 節(jié)點(diǎn),則可提供四個(gè) I/O 線程和四個(gè)惰性編寫(xiě)器線程,從而可以提高性能。
無(wú)法創(chuàng)建包含來(lái)自不同硬件 NUMA 節(jié)點(diǎn)的 CPU 的軟件 NUMA。例如,如果硬件具有八個(gè) CPU (0…7) 并且具有兩個(gè)硬件 NUMA 節(jié)點(diǎn)(0-3 和 4-7),則可以通過(guò)組合 CPU(0,1) 和 CPU(2,3) 來(lái)創(chuàng)建軟件 NUMA。無(wú)法使用 CPU (1, 5) 創(chuàng)建軟件 NUMA,但是可以使用 CPU 關(guān)聯(lián)將 SQL Server 實(shí)例與來(lái)自不同 NUMA 節(jié)點(diǎn)的 CPU 進(jìn)行關(guān)聯(lián)。因此,在上述示例中,如果 SQL Server 使用 CPU 0-3,則將只有一個(gè) I/O 線程和一個(gè)惰性編寫(xiě)器線程。如果在上述示例中,SQL Server 使用 CPU 1、2、5 和 6,則您將訪問(wèn)兩個(gè) NUMA 節(jié)點(diǎn)并具有兩個(gè) I/O 線程和兩個(gè)惰性編寫(xiě)器線程。
注意:有些硬件配置將共享 L3/L4 緩存之類(lèi)的公共資源。可以按照這些共享資源對(duì)處理器進(jìn)行分組,以創(chuàng)建軟件 NUMA 節(jié)點(diǎn)。
總結(jié)
- 上一篇: 生成式对抗网络(GAN)相关问题汇总(较
- 下一篇: 基于MATLAB的机器人学、机器视觉与控