[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.7] xen: Remove buggy initial placement algorithm
commit 471a151964da662d917ec61dffcbdb10a09fb285 Author: George Dunlap <george.dunlap@xxxxxxxxxx> AuthorDate: Fri Aug 5 13:39:36 2016 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri Aug 5 13:39:36 2016 +0200 xen: Remove buggy initial placement algorithm The initial placement algorithm sometimes picks cpus outside of the mask it's given, does a lot of unnecessary bitmasking, does its own separate load calculation, and completely ignores vcpu hard and soft affinities. Just get rid of it and rely on the schedulers to do initial placement. Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> Reviewed-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> master commit: d5438accceecc8172db2d37d98b695eb8bc43afc master date: 2016-07-26 10:44:06 +0100 --- xen/common/domctl.c | 50 +------------------------------------------------- 1 file changed, 1 insertion(+), 49 deletions(-) diff --git a/xen/common/domctl.c b/xen/common/domctl.c index e43904e..19e46b7 100644 --- a/xen/common/domctl.c +++ b/xen/common/domctl.c @@ -217,54 +217,6 @@ void getdomaininfo(struct domain *d, struct xen_domctl_getdomaininfo *info) memcpy(info->handle, d->handle, sizeof(xen_domain_handle_t)); } -static unsigned int default_vcpu0_location(cpumask_t *online) -{ - struct domain *d; - struct vcpu *v; - unsigned int i, cpu, nr_cpus, *cnt; - cpumask_t cpu_exclude_map; - - /* Do an initial CPU placement. Pick the least-populated CPU. */ - nr_cpus = cpumask_last(&cpu_online_map) + 1; - cnt = xzalloc_array(unsigned int, nr_cpus); - if ( cnt ) - { - rcu_read_lock(&domlist_read_lock); - for_each_domain ( d ) - for_each_vcpu ( d, v ) - if ( !(v->pause_flags & VPF_down) - && ((cpu = v->processor) < nr_cpus) ) - cnt[cpu]++; - rcu_read_unlock(&domlist_read_lock); - } - - /* - * If we're on a HT system, we only auto-allocate to a non-primary HT. We - * favour high numbered CPUs in the event of a tie. - */ - cpumask_copy(&cpu_exclude_map, per_cpu(cpu_sibling_mask, 0)); - cpu = cpumask_first(&cpu_exclude_map); - i = cpumask_next(cpu, &cpu_exclude_map); - if ( i < nr_cpu_ids ) - cpu = i; - for_each_cpu(i, online) - { - if ( cpumask_test_cpu(i, &cpu_exclude_map) ) - continue; - if ( (i == cpumask_first(per_cpu(cpu_sibling_mask, i))) && - (cpumask_next(i, per_cpu(cpu_sibling_mask, i)) < nr_cpu_ids) ) - continue; - cpumask_or(&cpu_exclude_map, &cpu_exclude_map, - per_cpu(cpu_sibling_mask, i)); - if ( !cnt || cnt[i] <= cnt[cpu] ) - cpu = i; - } - - xfree(cnt); - - return cpu; -} - bool_t domctl_lock_acquire(void) { /* @@ -691,7 +643,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) continue; cpu = (i == 0) ? - default_vcpu0_location(online) : + cpumask_any(online) : cpumask_cycle(d->vcpu[i-1]->processor, online); if ( alloc_vcpu(d, i, cpu) == NULL ) -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.7 _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |