Hi Emmanuel,
I am trying to debug the credit scheduler
to solve the many HVM domain instability issues we have found with the credit
scheduler.
While debugging I notice an odd behavior;
When running on a 2 CPU system, dom0 gets 2 vcpus by default. And even if there
are no other domains running in the system, the dom0 vcpus are getting
migrated to different pcpus in the load balance. I think it is due to the preemption
happening in the credit scheduler; and it is not necessary and is actually
wasteful to move vcpus when no of vcpus in the system are equal to no of pcpus.
I would like to know your thinking about
this behavior. Is it an intended in the design?
I added this small fix to the scheduler to fix this
behavior. And with it I see the stability of Xen improved. Win2003 boot was
crashing with unhandled MMIO error on xen64 earlier with credit scheduler. I am
not seeing that crash with this small fix anymore. It is quiet possible that
there are more bugs I need to catch for HVM domains in the credit scheduler. And
I would like to know your thoughts for this change.
csched_runq_steal(struct csched_pcpu *spc, int cpu, int pri)
{
struct list_head *iter;
struct csched_vcpu *speer;
struct vcpu *vc;
/* If
there are only 1 vcpu in the queue then stealing it from the queue
* is not going not
help in load balancing.
*/
if
(spc->runq.next->next == &spc->runq)
return NULL;
Thanks & Regards,
Nitin
-----------------------------------------------------------------------------------
Open Source Technology Center, Intel Corp