VCPUs bug in Xen?

I’m not sure into which forum this question should go, but I’ve a 32-processor (8ea 4-core Opterons) and installed Xen under openSuSE11.0. All went well, and I installed Win2003Server Enterprise Edition, which I know supports at least 16 CPUs because I have it installed as the main OS on a 16-processor system (8ea dual-core Opterons) and it uses all 16 CPUs.

When I set up the VM, I told it to allow 16 CPUs, but after Windows installed, it only “sees” 8 CPUs. I’m wondering if there’s a bug in Xen somewhere? I suspect not many of the developers have 32-processor machines to test Xen on, and maybe this one slipped through? Has anyone tried WinXP to see how many processors it will support? I suspect older versions have unlimited SMP capability but nowadays Microsoft is enforcing the CPU limit… That’s why I had to plunk down $$ for the Enterprise Edition - the Win2003 Standard only allows 8 CPU’s (ignores the others). I have a quad-core system and WinXP sees all 4 cores.

Thanks!!
Patti

Ahhh… it’s beginning to make some sense (I think)… Before I start the VM, I allocate 16 CPUs in the Machine Details dialog box, then upon boot of the VM, I can see it drop to first 1, then 3, then it counts up to 8 and stops. So it seems like Xen is not responding to Win2003Server Enterprise Edition the same way the BIOS does… that is to say, it supports 16-CPUs when I boot it as the host OS, but when booted under Xen it only claims 8, irrespective of how many (over 8) I set in the VM configuration. (If I set less than 8, it claims whatever number I set.)

So, yes, this is a flaw, but I’m not sure it exactly qualifies as a “bug.” Does anyone know if there’s a windows command to specify the number of CPU’s to use, analogous to MAXMEM specifying the memory to use?

EDIT: I found NUMPROC= in a page on boot.ini
Boot INI Options Reference

EDIT2: Nope - /NUMPROC=16 didn’t work. It’s a genuine bug. :frowning:

Its not a bug, its a MS feature :wink:

Windows Server Enterprise edition only support up to 8 SOCKETS!

On bare metal, windows can see the 8 Sockets, and makes use of the 2 cores per socket.

On a virtual environment, Windows cannot determine the number of sockets of the hardware (because its virtualized!).
So it assumes each thread it sees as one socket.

On the other hand you are allowed to install 4 virtual machines with 1 Windows Enterprise license.

Cheers
Mundl

Thank you very much!!
I found a link saying that one could tell Xen to provide several vcpus per socket but I can’t find an explanation of the syntax! Does this make sense to anyone? I need to decode the syntax because here the person gets 8vcpus on a dual quad core system and I have an 8-quad-core system so the exact same syntax won’t work for me… :frowning:

**I found the solution to this problem, in my hvm windows config file I added:

cpuid=‘1:edx=xxx1xxxxxxxxxxxxxxxxxxxxxxxxxxxx,ebx=xxxxxxxx00010000xxxxxxxxxxxxxxxx’,‘4,0:eax=001111xxxxxxxxxxxxxxxxxxxxxxxxxx’]
vcpus=8

Which makes the 8 CPUs appear to the guest os as a single 8 core
rather than 8 separate cpus, as windows is limited to 2 sockets it now
sees all 8 cores in task manager.

Andy**

For anybody who might stumble upon this post.

It should read

cpuid='1:edx=xxx1xxxxxxxxxxxxxxxxxxxxxxxxxxxx,ebx=xxxxxxxx00010000xxxxxxxxxxxxxxxx','4,0:eax=001111xxxxxxxxxxxxxxxxxxxxxxxxxx']

The “” after cpuid= is missing in the original post.

Thanks for the fix!!