SQL Server 套接字/CPU 配置
在您看來,關於虛擬客戶 Socket/CPU 配置,最佳 SQL Server 性能的最佳配置是什麼?我讀過許多文章,說明寬插槽配置(每個插槽 1 個 cpu)可提供最佳性能。在其他文章中,SQL Server 的最佳性能是通過 1 個套接字和那個套接字中的“x”個 cpu 來實現的。將來賓 VM 套接字/CPU 與物理主機配置相匹配。
SQL Server Standard 僅限於 4 個套接字,但您發現哪種配置性能最好?我們確實計劃在不久的將來執行負載測試。我期待您的回饋。提前致謝!!!
對於大多數工作負載,一旦為 vm 選擇了處理器、vcpus 的數量和 vRAM 的數量,最佳選擇將 vcpus 和 vRAM 均勻分佈在允許 vcpus 和 vRAM 對齊的最小數量的 vNUMA 節點上下相同數量的物理 NUMA 節點上的物理資源。
Mark Achtemichuk 的這篇博文很好地解釋了這個想法。虛擬機 vCPU 和 vNUMA 調整大小 – 指南 https://blogs.vmware.com/performance/2017/03/virtual-machine-vcpu-and-vnuma-rightsizing-rules-of-thumb.html
因此,對於允許 4 個虛擬套接字或 24 個 vcpus 中的較小者的 SQL Server 標準版:在所有其他條件相同的情況下,所有 vcpus 都位於單個 vNUMA 節點中,所有 vcpus 和 vRAM 都來自單個底層物理 NUMA 節點。如果該 vm 的 RAM(或 vcpus)數量無法容納在一個物理 NUMA 節點中,請將其拆分為 2 個 NUMA 節點。如果必須,僅轉到 4 個 NUMA 節點。並且…根據我使用的分析工作負載…嘗試盡可能長時間地停留在 4 個 NUMA 節點上,然後再增加到 8 個。
Mark Achtemichuk 的部落格文章還連結到 Frank Denneman 的一些材料 - 他深入研究了一些特定的 VMware 參數,這些參數可能需要根據需要平衡 VM。
儘管 VMware 在最近建議所有 Windows 虛擬機(包括最多 64 個 vcpus* 的 SQL Server)預設設置 cores-per-scoket=1 以讓 ESXi 自動規劃 vNUMA 配置,但他們正在過渡到建議設置 cores-per-socket到 vNUMA 節點中預期的 vcpus 數量。
我有看到一個特定的 SQL Server 工作負載和系統,即使所有 vcpus 和 vRAM 都可以安裝在單個物理 NUMA 節點上的一個 vNUMA 節點上,但它被有意放置在 2 個 vNUMA 節點上,平衡在 2 個物理 NUMA 節點上。這樣做是因為特定的記憶體對象僅在節點級別進行分區,並且無法像許多對像那樣動態地分區到 cpu 級別。結果,雖然所有 vcpus 都位於單個 vNUMA 節點中,但會出現嚴重的自旋鎖爭用,從而影響性能。通過將相同數量的 vcpus 拆分為兩個 vNUMA 節點(並在 2 個物理 NUMA 節點之間平衡這些 vNUMA 節點),這種自旋鎖爭用得到緩解。然而,這是一個非常特殊的情況,
*對於高於 64 vcpus 的 Windows VMware VM,cores-per-socket 必須設置為大於 1 以符合 Windows 64 套接字限制。
您可能想通讀 Web 上提供的一些標準 VMware 文獻。
- VMware 和 SQL Server 最佳實踐。(Straightpath SQL 部落格 | 文章)
我希望您對 VMware 和 SQL Server 性能有所了解。這些並不是深奧而神秘的秘密。但它們是我們看到很多人仍然錯過的東西。
- SQL Server 最佳實踐指南(VMware | PDF | 需要 VMware 社區登錄)
- Microsoft SQL Server 和 VMware 虛擬基礎架構(VMware | PDF )
本文將幫助您了解如何為虛擬化描述 SQL Server 數據庫,以及設計 VMware Infrastructure 以支持 SQL Server 的最佳實踐。
- 在虛擬機中配置 Microsoft SQL Server 的提示(VMWare | 知識庫文章)
本文提供了在虛擬機中配置 Microsoft SQL Server 時要考慮的要點列表。