| 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
 |