我的理解是,使用 VM 的一大好处是您可以在主机上的虚拟机之间共享资源。因此,您可以拥有一台具有 120 个 CPU 的主机,并在其上放置 5 个虚拟机,每个虚拟机具有 32 个 CPU。额外的 CPU 在 VM 之间“共享”,主机根据需要动态分配 CPU。内存也一样。
我也明白这对于容纳 SQL Server 的 VM 来说是一个很大的禁忌,但我的 VM 管理员不同意。有没有人有任何证据或文件?
我不知道这是否重要,但我们正在使用 VMWare。
我的理解是,使用 VM 的一大好处是您可以在主机上的虚拟机之间共享资源。因此,您可以拥有一台具有 120 个 CPU 的主机,并在其上放置 5 个虚拟机,每个虚拟机具有 32 个 CPU。额外的 CPU 在 VM 之间“共享”,主机根据需要动态分配 CPU。内存也一样。
我也明白这对于容纳 SQL Server 的 VM 来说是一个很大的禁忌,但我的 VM 管理员不同意。有没有人有任何证据或文件?
我不知道这是否重要,但我们正在使用 VMWare。
您要问的是,“如果我们过度使用 CPU 可以吗?”
没关系,直到您开始遇到与 CPU 消耗相关的性能瓶颈。同样的答案也适用于网络过度使用——这不像是在主机中放置 5 个独立的 10Gb 以太网卡,并为每个 VM 专用一张卡。虚拟化就是过度使用,以及在资源可用性和资源需求之间游走。
不过,一般来说,您不想过度使用内存,因为 SQL Server 会主动使用您提供给它的任何内存。与其让 VM 分页到主机的磁盘,不如对 VM 进行逐个分析以找出哪些 VM 可以使用更少的内存,然后以更少的内存配置它们。
我看到动态分配某些资源的问题是它会导致不可预测的性能。报告查询 x 昨天有 32 个 CPU 可用,并在 4 分钟内运行,今天它只有 24 个,而且花费了相当长的时间。您还可以看到来宾等待其他内核可用时的延迟。
Jonathan Kehayias 在这里给出了一些关于过度订阅 CPU 和内存的实用警告(坦率地说,我比典型的 VM 管理员更相信他的经验和建议,没有冒犯他们,但我怀疑他对组合有更多直接的经验):
我的理解是某种程度的 CPU 过度使用可能完全没问题,但这完全取决于所有来宾的工作负载要求。查看 David Klee 的博客以获得大量有用的 VM 信息。具体http://www.davidklee.net/articles/sql-server-articles/cpu-overcommitment-and-its-impact-on-sql-server-performance-on-vmware/ CPU 过度承诺解释及其影响在 SQL 服务器上。
内存过度使用完全是另一种动物,一般来说,如果 VM 主机正在运行 SQL Server,则不应过度使用内存。我将再次使用 David Klee 作为参考。http://www.davidklee.net/2013/11/04/lock-pages-in-memory-in-sql-server-on-vmware-why-or-why-not/他在其中解释了内存的影响-承诺。
希望这可以帮助。