Recent Virtual Server 2005 posts* * * * * * * * * * * * * * * * * * * *
|
Add Solution
Latest Topics
Post Reply |
This is Spam! | Mark as Spam
CPU usage on 8 core (quad dual-core) Opteron is inconsistent and randomSource: microsoft.public.virtualserver Sent: 01/04/2006 From: "CW Hobbs" <(just)(email address - cut out)> Message:(reposting from the tail of an earlier thread)
I have some observations, and questions.
I installed VS2005 R2 Std (the MSDN kit) on an HPaq DL585g1 - 8 core (quad
dual-core), 32 GiB RAM on top of W2k3 Enterprise x64 edition. It shows the
properties as:
Processors
Physical processors:4
Logical processors:8
Processor speed:2.2 GHz
Processor type:AMD AuthenticAMD
Processor version:x86 F15 M1 S0
Processor features:MMX, SSE3, 3DNow!, x86-64
At first, it was definitely using all 8 cores - I'd see 100% CPU utilization
across all 8 cores when running 36 Windows XP SP2 virtual machines.
(Particularly when simultaneously booting all 36 - the VS BIOS appears to do
a lot of busy-waiting....)
Later, I was running 8 compute-bound XP systems, and was only seeing 88% CPU
utilization - it was only using 7 of the 8 cores. I rebooted the host, and
after that it would never go above 50% utilization. CPUs 0,2,4,6 would be
at 100%, CPUs 1,3,5,7 would be idle, and the 8 VMs would be getting 50% of a
CPU each....
I tried explicitly setting NUMA allocation by adding the paragraph:
<numa>
<memory>
<preferred_node type="integer">3</preferred_node>
</memory>
</numa>
to the .VMC config file for two of the machines. (I'd shutdown all 8.)
When I started the first one, it allocated memory on node 3, and spent most
of its time on CPU 6, as one would expect.
When I started the second one, it also allocated on node 3, but bounced
between CPU 2 and CPU 4 (rather than using CPU 7 where its memory was).
____________
I then removed the VS R2 Std Edition, and installed the Enterprise Edition
(the downloaded 180 day eval).
This is working as expected. In the previous test, the first VM stayed
(mostly) on CPU 6, and the second one on CPU 7. I started up two more VMs
with allocation on Node 2, and those ran (mostly) on CPU 4 and CPU 5. I
then added two more on node 1 and the final two on node 0. Started them,
and I'm getting 100% on all 8 CPU cores.
____________
So, my questions are:
1. Should Std edition support a quad dual-core system, or is it licensed per
logical CPU, not per physical CPU.
2. Why did it use all 8 cores for a few days, then 7 cores, then 4 cores?
3. Is there a way to set CPU affinity explicitly? The implicit CPU affinity
from setting memory affinity mostly works, but it is so expensive to cross
the NUMA nodes I'd like the option for hard affinity. (My app is a
compute-bound task that runs for weeks, and can only run one thread per
system. Running it in VMs is the only way to use more than one CPU of an
SMP system. I realize that hard affinity is often worse than soft affinity
or no affinity - but in my case it's the right thing.)
"CW Hobbs" (just)(email address - cut out)
=============================================
=============================================
Actually, further testing shows that the behaviour is rather weird....
VS will choose something between the number of physical processors and the
number of logical processors, inclusive. The number seems to be random.
After writing the last message, I had to reboot the host for an unrelated
reason. After reboot, the CPU (as shown by Task Manager) was about 63%
busy - meaning that 5 CPUs were being scheduled.
The load is 8 VMs that are set to automatically boot everytime VS starts.
Each VM is 100% CPU bound, except for a few megabytes of net traffic once or
twice a day.
To check this, I simply repeated
net stop "Virtual Server"
followed by
net start "Virtual Server"
and looked at the Task Manager report of CPU usage:
50%
88%
63%
50%
75%
100%
So, each time it used a different number of CPUs.
Also, very interesting, is that when it was at an intermediate value, say
88% - you'd see a step function where it would be at 88% for a while, then
75% for a short time, then back to 88%. Very clearly a step function where
it would alternate between using 6 processors and 7 processors.
Methinks it's somewhat broke....
-cw
Post Reply |
This is Spam! | Mark as Spam
Related Messages
Post Reply |
This is Spam! | Mark as Spam
Other groups
|