在具有16个内核/处理器的2处理器计算机上使用SQL Server 2012时CPU使用率非常不均匀


8

在使用Server + Cal许可模型安装SQL Server Enterprise 2012之后,在一台具有2个处理器,每个处理器具有16个核(并且不涉及超线程)的计算机上,并使服务器承受极高的负载,第一个处理器上的16个核的利用率非常低,第二个CPU上的前4个核心被大量利用,而最后12个核心根本没有被使用(因为此sql服务器版本限制为20个核心)。总CPU利用率显示为25%左右。不幸的是,即使任务均匀地分布在20个内核上,服务器的性能也极差,它的表现不会差那么远。

Windows Server在ESX Server下的VMWare虚拟映像上运行,但是所有CPU都分配给了Windows服务器。

我们尝试更改相似性设置(例如,将大多数内核分配给CPU,将其他内核分配给I / O),但这无助于解决性能问题。

将产品版本升级到SQL Server Enterprise Core 2012,不仅允许SQL Server在第二个处理器上利用以前未使用的12个内核,而且还导致任务在所有处理器上的分配更加均匀。为了解决积压的请求,cpU利用率跃升至90%左右,一旦被追赶,则下降至33%左右,但是由于我们故障转移到新更新的版本,因此性能大大提高,并且性能问题消失了。

我想知道是否有人会导致SQL Server分配负载不均,几乎完全依赖于第二个处理器的前4个内核,而该处理器的12个内核处于空闲状态,而仅分配几个任务给第一个16个内核处理器。此外,是否有任何方法可以在不升级产品版本的情况下将负载更均匀地分配到所使用的20个内核上?

问题的另一面是,产品升级是什么导致SQL Server开始在它所识别的所有核心上平均分配负载?

感谢您对这些问题和/或链接的解答,这可能有助于我更好地理解如何理解正在发生的事情。


您是说问题机器是具有32个vCPU的VM吗?在这两种情况下?
mfinni 2012年

是的,它是同一台机器,具有2个处理器,每个处理器具有16个内核(不涉及超线程)。
cooplarsh 2012年

1
为什么以耶和华的名义有32个vCPU?您是否尝试过减少它?我知道ESXi改进了对CPU的调度,但是您只是在问这么多问题。您使用的是哪个版本的ESXi?底层硬件是什么?
mfinni 2012年

Answers:


4

性能不平衡可能是20核限制与sql server在NUMA计算机上调度线程的方式的结合。不幸的是,SQL Server 2012在决定使用哪20个内核时没有使用任何智能,导致每个NUMA节点的内核数量不平衡。由于32个核心分布在2个NUMA节点上,您最终可能会进行16/4拆分。这是有问题的,因为SQL会尝试以循环方式在NUMA节点之间平均地平衡活动(假设您不强制使用资源调控器的相似性)。

在您的情况下,将1/2负载分配给4核,将1/2分配给16核。4核节点上的瓶颈有效地起到了限制作用,将计算机的容量限制为2x 4核= 8核= 25%的CPU使用率。

升级到核心版本后,sql将在2个numa节点(16/16拆分)中利用所有32个核心。性能提高等

一种可以提高性能的选择是利用sql server资源调控器将大部分工作负载关联到一个numa节点。例如,您可以创建资源池WEB_APP,并将其关联为仅在16个核心numa节点上运行。分配给WEB_APP池的负载可以利用服务器容量的50%,再加上4核心节点的剩余12.5%的容量。

另一个选择是将每个numa节点中可用于sql server的内核数限制为10。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.