_csched_cpu_pick(): don't write idle bias more than once

For the bias to be really meaningful, it should be updated only when
the CPU selected will indeed be returned (and hence used for placing
the vCPU in question).

Signed-off-by: Jan Beulich <jbeulich@novell.com>
This commit is contained in:
Jan Beulich committed 2011-03-14 17:19:47 +00:00
1 parent 58a83b75d1
commit 32084d0016
1 file changed
+6 -3
+6 -3
View File
@@ -464,6 +464,7 @@ _csched_cpu_pick(const struct scheduler *ops, struct vcpu *vc, bool_t commit)
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 *ops, struct vcpu *vc, bool_t commit)
&& (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 *ops, struct vcpu *vc, bool_t commit)
}
}
if ( commit && spc )
spc->idle_bias = cpu;
return cpu;
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.