訓練
認證
Microsoft Certified: Azure Database Administrator Associate - Certifications
使用 Microsoft PaaS 關聯式資料庫供應項目管理用於雲端、內部部署和混合關聯式資料庫的 SQL Server 資料庫基礎結構。
適用於:SQL Server
本文會討論 SQL Server 版本的計算容量限制,以及其在具有同步多執行緒 (SMT) 處理器的實體與虛擬化環境中有何差異。 在 Intel CPU 上,SMT 被稱為超執行緒。
下表說明上圖中的標記法:
值 | 描述 |
---|---|
0..1 | 零個或一個 |
1 | 只有一個 |
1..* | 一個或多個 |
0..* | 零個或多個 |
1..2 | 一個或兩個 |
詳細說明:
下列定義適用於本文所用的詞彙:
從 SQL Server、作業系統、應用程式或驅動程式的觀點而言,執行緒或邏輯處理器都是單一邏輯計算引擎。
核心則是處理器單元, 可能由一或多個邏輯處理器組成。
一個實體處理器可能是由一個或多個核心組成。 實體處理器與處理器套件或插槽相同。
您可能會在每個 NUMA 節點包含超過 64 個邏輯處理器的伺服器上遇到堆疊傾印等問題。 BIOS 或韌體設定可將提供給操作系統的邏輯核心計數減少到每個 NUMA 節點最多 64 個邏輯處理器。
警告
SQL Server 2022 (16.x) 累積更新 11 引入了一項重大變更,當每個 NUMA 節點偵測到超過 64 個邏輯核心時,資料庫引擎將不會啟動。
從 SQL Server 2022 (16.x) 累積更新 15 開始,安裝程式會產生警告,指出此設定不受支援,並會導致停止和停用 資料庫引擎 服務。 此警告也會包含在安裝記錄中。
您可以藉由停用 SMT 來減少 Azure 虛擬機器中每個 NUMA 節點的邏輯核心計數。 針對 裸機 SQL Server 執行個體,您可以使用子 NUMA 叢集 (SNC) 或每個通訊端的節點 (NPS) 選項來減少邏輯核心計數。
SQL Server 每個 NUMA 節點最多支援 64 個邏輯核心。 在某些情況下,Azure Mv3 系列 VM 可能會超過此限制,導致 SQL Server 無法啟動,或只能以降級的效能執行。 若要停用 SMT,請使用 PowerShell 和登錄編輯程式 (reg.exe
) 進行下列變更。 在編輯登錄之前,請務必先進行備份。
檢查邏輯核心數目。 如果比率為 2:1,則會啟用 SMT (邏輯核心數目是核心數目的兩倍)。
Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
透過下列兩個登錄變更停用 SMT,然後重新啟動 VM。
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 8264 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
再次檢查邏輯核心數目。 邏輯核心數目應與核心數目相符。
Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
下列各節說明如何減少 SQL Server 裸機實例上的邏輯核心計數。
第三代、第四代和第五代的 Intel Xeon CPU,您可以啟用子 NUMA 群集(SNC),此前稱為 Cluster-on-Die (CoD),這會在單一實體插槽內形成兩個 NUMA 域。
注意
第六代 Intel Xeon CPU 預設會啟用子 NUMA 叢集 (SNC2 或 SNC3)。 在某些 CPU 模型中,預設 SNC 設定可能會導致每個 NUMA 節點超過 64 個邏輯處理器。 您應該為這些 CPU 模型啟用 BIOS/韌體中的 Intel 虛擬 NUMA 功能,以及 SNC2 或 SNC3。
組態設定 | 描述 |
---|---|
已停用 SNC 1 | 停用子 NUMA 叢集。 |
SNC2 已啟用 2 | 每個套接字顯示兩個NUMA節點。 |
已啟用 SNC3 2 | 每個套接字顯示三個 NUMA 節點。 |
已啟用 Intel VirtualNuma 3 | 在單一實體 NUMA 節點內建立多個虛擬節點。 |
1 第三代、第四代和第五代 Intel Xeon CPU 的預設值。
2 第六代及以後的 Intel Xeon 處理器的預設值。
3 僅適用於第六代 Intel Xeon CPU 和更新版本。 針對高核心計數 CPU 使用此設定,其中每個 NUMA 節點的邏輯處理器數目在使用 SNC 預設值時超過 64 個。
在 AMD 處理器 上,您可以啟用不同的每插槽節點數 (NPS) 選項。
組態設定 | 描述 |
---|---|
NPS0 |
在雙通訊端系統中,NUMA 會以單一節點的形式呈現,且所有記憶體通道會跨各節點交錯。 |
NPS1 (預設值) |
此設定會顯示每個通訊端一個 NUMA 節點。 |
NPS2 |
此設定會顯示每個通訊端兩個 NUMA 節點,類似於 SNC。 |
NPS4 |
此設定會顯示每個通訊端四個 NUMA 節點。 |
具有多個實體處理器的系統或是具有多核心及/或 SMT 之實體處理器的系統可讓作業系統同時執行多個工作。 每個執行緒都會顯示為邏輯處理器。 例如,如果電腦具有兩個啟用 SMT 的四核心處理器,且每個核心都有兩個執行緒,則一共有 16 個邏輯處理器:2 個處理器 x 每個處理器 4 個核心 x 每個核心 2 個執行緒。 值得注意的是:
來自 SMT 核心之單一執行緒的邏輯處理器計算容量小於來自停用 SMT 之相同核心的邏輯處理器計算容量。
SMT 核心中兩個邏輯處理器的計算容量則大於停用 SMT 之相同核心的計算容量。
每個 SQL Server 版本都有兩個計算容量限制:
插槽 (或實體處理器或處理器套件) 數目上限
作業系統所報告的核心數目上限
這些限制適用於單一 SQL Server 執行個體。 它們代表單一執行個體會使用的計算容量上限。 並不會限制執行個體可能部署的伺服器。 實際上,在相同的實體伺服器上部署多個 SQL Server 執行個體,可有效地使用插槽及 (或) 核心數目超過所允許容量限制之實體伺服器的計算容量。
下列資料表會指定每個 SQL Server 版本其單一執行個體的計算容量限制:
SQL Server 版本 | 單一執行個體的計算容量上限 (SQL Server 資料庫引擎) | 單一執行個體的計算容量上限 (AS、RS) |
---|---|---|
Enterprise Edition:核心授權 1 | 作業系統最大值 | 作業系統最大值 |
開發人員 | 作業系統最大值 | 作業系統最大值 |
標準 | 限制為 4 個插槽或 24 個核心的較小者 | 限制為不超過 4 個插槽或 24 個核心,以其中的較小者為準 |
快遞 | 限制為最大 1 個插槽或 4 個核心中的較小者 | 限制為插槽數量為 1 或核心數量為 4,以較小者為準 |
1 伺服器 + 用戶端存取使用權 (CAL) 的 Enterprise Edition 授權限制為每個 SQL Server 執行個體 20 個核心。 (新協議未提供此授權。) 核心伺服器授權模式之下沒有任何限制。
在虛擬環境中,計算容量限制的依據為邏輯處理器的數目,而非核心數目。 原因是客體應用程式看不見處理器架構。
例如,如果一部伺服器的四個插槽都插入四核心處理器,而且能夠為每個核心啟用兩個 SMT 執行緒,則在啟用 SMT 的情況下,總共包含 32 個邏輯處理器。 但是在停用 SMT 的情況下,只包含 16 個邏輯處理器。 這些邏輯處理器可以映射到伺服器上的虛擬機器。 而該邏輯處理器之虛擬機器計算負載則對應至主機伺服器中實體處理器上執行的執行緒。
當每個虛擬處理器的效能都很重要時,建議您停用 SMT。 您可以在 BIOS 設定期間使用處理器的 BIOS 設定,以設定 SMT,但這通常是伺服器範圍的作業,會影響伺服器上執行的所有工作負載。 您可以考慮將在虛擬環境中執行的工作負載,與在實體作業系統環境中能夠受益於 SMT 效能增強的工作負載分開。
您知道您可以自行編輯 SQL 內容嗎? 如果這麼做,不僅可以幫助改善我們的文件,還會在該頁面中被認可為貢獻者。
如需詳細資訊,請參閱如何參與 SQL Server 文檔
訓練
認證
Microsoft Certified: Azure Database Administrator Associate - Certifications
使用 Microsoft PaaS 關聯式資料庫供應項目管理用於雲端、內部部署和混合關聯式資料庫的 SQL Server 資料庫基礎結構。