VMware + SQL Server – sqlserver.exe不使用两个CPU核心

我正在运行SQL Server Express的虚拟机(作为Sage Line 50 Manufacturing的一部分)。 详情如下:

物理服务器(主机)
– 英特尔至强四核2.1GHz
– 4GB内存
– 存储在RAID-5 500GB SATA驱动器(7200RPM)上的VMDK映像
– 运行Ubuntu 10.04 Server 64位
– VMware Server 2

虚拟机
– Windows Small Business Server 2003
– 分配了2个vCPU和2GB RAM
– 使用100GB预先分配的平面VMDK文件

我遇到的问题是在CPU密集型的SQL Server中运行的进程。 在我们迁移到虚拟机的旧物理服务器上,这将利用两个CPU核心,因此sqlserver.exe进程将在每个CPU核心上运行100%。 在虚拟机上,似乎只使用两个CPU内核之一,这意味着该过程运行速度要慢得多。


有没有办法强制 SQL Server(sqlserver.exe进程)使用两个CPU核心,并分配它们之间的负载? 这是否需要更改以允许进程使用两个内核的VMware设置?

我对虚拟机上的MS SQL Express数据库没有太多的经验,但我想你只是碰到了MS SQL Express Edition的硬件限制。

我假设你的物理服务器有2个内核的CPU。 MS SQL Express 2008(也是我认为的2005)也只支持一个物理CPU,但是多核心。

VM将每个vCPU识别为单个CPU,而不是作为附加核心。 所以sqlserver.exe进程被限制为1个vCPU。

在vSphere中(这可能不适用于VMware服务器,但对那些偶然发现此问题的人可能会有用),您可以更改呈现给VM的“每个插槽的核心数”,以准确反映多核(或超线程)CPU。

看到这篇文章: http : //www.virtualizationbuster.com/?p=132