SQL Server 虛擬化最佳實踐 - NUMA、HT、核心與速度
我們在 Cisco UCS + VMware ESX + HP 3PAR 上執行。
主機刀片配置:UCSB-B200-M4,Xeon E5-2667 v3 3.1GHz,2 個插槽,每個 8 個核心,超執行緒活動因此總共 16 個物理核心或 32 個邏輯核心。
我們有 M$ 的軟體保障,所以都是企業版,並且支付了許多額外的 SQL 核心許可證,所以錢不是問題。
我們的主要單 OLTP SQL 虛擬機“專用”於其中一台主機,即不允許其他虛擬機在其上執行,因為它需要全部 16 個電源核心。即使這樣,CPU 仍會定期執行 ~60-80% ,因此我們計劃升級硬體。以下問題:
- SQL Server 處理器 NUMA 配置 - 所有 16 個處理器都在 1 個 NUMA 節點上 - 但我認為由於主機有 2 個套接字,所以會有 2 個 NUMA 節點?
- vCenter Socket/Core config - 16 個插槽,每個插槽 1 個核心 - 將其更改為每個插槽 8 個核心的 2 個插槽是否更好,因為它匹配底層硬體?
- 我最近在 PASS 會議上聽說,如果整個 VM 專用於單個主機,則禁用超執行緒。有人同意/不同意嗎?
- 作為基本的紙筆計算,我們需要將我們的“計算能力”從 50(16 核 x 3.2Ghz)翻倍到 ~100 GHz。
在 2 個插槽上獲得更高的核心數是否更好:
E5-4669:2 個插槽 x 22 個核心 x 2.2 Ghz = 96.8 Ghz
或 4 個插槽上的更高時鐘速度:
E5-4627:4 個插槽 x 10 個核心 x 2.6 Ghz = 104GHz
您可以做的最好的事情是閱讀 VMWare 指南“VMWare 上的 SQL Server 最佳實踐指南”。這包含您需要的所有資訊。然而…
- 除非將實例配置為“寬 VM”,從每個套接字獲取 vCore,否則您將看不到 2 個 NUMA 節點。啟用超執行緒後,您只能在一個插槽上使用核心。(3.3.4 NUMA 考慮)。
- 最佳實踐指南:“VMware 建議在 vSphere 平台上為 VM 分配虛擬 CPU 時將每個插槽的核心數設置為 1。這意味著需要 8 個 CPU 的 VM 將具有 8 個 vCPU,每個 vCPU 有 1 個核心。” (每個插槽 3.3.5 個核心)。不過自己測試一下。
- 我在哪里工作,答案是“視情況而定”。在某些情況下,我們將其保持啟用狀態,而在某些情況下則不啟用。但是……“VMware 建議在 BIOS 中啟用超執行緒,以便 ESXi 可以利用這項技術。” (3.3.3 超執行緒)
- 如果主機上沒有其他實例,那麼它就不像有多個實例那樣重要。如果您希望最大限度地提高性能,將它們分配到單獨的套接字將是有益的。不幸的是,您需要進行大量測試和數據擷取才能做出客觀的決定——我沒有從 VMWare 中找到任何與此相關的具體內容。
通讀整個指南並閱讀: http: //www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/solutions/sql-server-on-vmware-best-practices-guide.pdf。
其他考慮因素是檢查電源方案,因為這些可能會限制 CPU 如此之低,以至於您的性能非常差,即使是您能負擔得起的最好的 CPU。
從最佳實踐指南:
VMware 建議在將虛擬 CPU 分配給 vSphere 平台上的 VM 時將每個插槽的核心數設置為 1。這意味著需要 8 個 CPU 的 VM 將具有 8 個 vCPU,每個 vCPU 有 1 個核心。
這似乎是一個糟糕的建議(似乎不在目前指南中),因為為 8 個 CPU 設置 1 個核心意味著 SQL 標準 2016 將僅使用 4 個適當的許可,並且會消除 MaxDOP 的用處。