For the bias to be really meaningful, it should be updated onbly when
the CPU selected will indeed be returned (and hence used for placing
the vCPU in question).
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
--- a/xen/common/sched_credit.c
+++ b/xen/common/sched_credit.c
@@ -464,6 +464,7 @@ _csched_cpu_pick(const struct scheduler
cpumask_t cpus;
cpumask_t idlers;
cpumask_t *online;
+ struct csched_pcpu *spc = NULL;
int cpu;
/*
@@ -531,9 +532,8 @@ _csched_cpu_pick(const struct scheduler
&& (weight_cpu * migrate_factor < weight_nxt) ) )
{
cpus_and(nxt_idlers, cpus, nxt_idlers);
- cpu = cycle_cpu(CSCHED_PCPU(nxt)->idle_bias, nxt_idlers);
- if ( commit )
- CSCHED_PCPU(nxt)->idle_bias = cpu;
+ spc = CSCHED_PCPU(nxt);
+ cpu = cycle_cpu(spc->idle_bias, nxt_idlers);
cpus_andnot(cpus, cpus, per_cpu(cpu_sibling_map, cpu));
}
else
@@ -542,6 +542,9 @@ _csched_cpu_pick(const struct scheduler
}
}
+ if ( commit && spc )
+ spc->idle_bias = cpu;
+
return cpu;
}
csched-pick-adjust.patch
Description: Text document
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|