Hi
Roger,
For
the 1), the TSC will works as normal when turbo mode is enabled. in recent Intel
processor since Pentium 4, TSC frequency is constant regardless the CPU
frequency scaling. i.e. TSC will always run @ highest non-turbo frequency, so
the TSC offset should be valid. You can search X86_FEATURE_CONSTANT_TSC for
more detail. And I don’t see any point that Westmere could cause Xen
problem. if you observe any problem, feel free to report in mailing list.
For
2), Xen scheduler is HT aware, and will pick the idle cores first rather
than an idle thread on a busy core. You can check xen/common/sched_credit.c:_csched_cpu_pick()
for more detail.
Regards
Ke
From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
[mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Roger Cruz
Sent: Monday, January 25, 2010 11:37 PM
To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] Question on hyperthreading and Westmere processors.
Hi
folks,
I’m
wondering if one of you could answer a couple of questions with regards to the
new Intel processors and VM scheduling when hyperthreads are involved.
1)
For Nahelem/Westmere processors, Intel has a
feature where it can turbo the processor’s frequency. In an SMP
environment, would this turbo boost affect Xen in any ways? For example,
does the TSC offset computation between processor’s becomes
invalid? Are there any other features or reasons why a Westmere processor
would cause a problem for Xen?
2)
These new processors have hyper threading
enabled. Is Xen’s scheduling algorithm cognizant of threads
so that it can most effectively schedule VMs on idle cores rather than use an
idle thread on a busy core?
Let me explain that
better. For example, on 1 quad-core HT-enabled processor server,
there are a total of 8 working units (4 cores + 4 threads).
Assume we labelt them this way: [core#,thread#]: [0,0], [0,1], [1,0], [1,1],
[2,0], [2,1], [3,0], [3,1]. If there are 3 VMs exist, does the scheduler
arrange the VMs such that VM1 is on [0,0], VM2 is on [1,0], and VM3 on
[2,0]? Or does it tread all the work units without regards to their
locations and schedule them as [0,0], [0,1] and [1,0], for example? In
the latter case, two VMs are schedule on the same core, which would be less
effective than scheduled on the idle core.
Thanks
Roger