Sql-Server

SQL Server 套接字/CPU 配置

  • December 9, 2020

在您看來,關於虛擬客戶 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 性能有所了解。這些並不是深奧而神秘的秘密。但它們是我們看到很多人仍然錯過的東西。

本文將幫助您了解如何為虛擬化描述 SQL Server 數據庫,以及設計 VMware Infrastructure 以支持 SQL Server 的最佳實踐。

本文提供了在虛擬機中配置 Microsoft SQL Server 時要考慮的要點列表。

引用自:https://dba.stackexchange.com/questions/281129