[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v1] domctl: hold domctl lock while domain is destroyed
From: Dmitry Isaykin <isaikin-dmitry@xxxxxxxxx> This significantly speeds up concurrent destruction of multiple domains on x86. I identify the place taking the most time: do_domctl(case XEN_DOMCTL_destroydomain) -> domain_kill() -> domain_relinquish_resources() -> relinquish_memory(d, &d->page_list, PGT_l4_page_table) My reference setup: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz, Xen 4.14. I use this command for test: for i in $(seq 1 5) ; do xl destroy test-vm-${i} & done Without holding the lock all calls of `relinquish_memory(d, &d->page_list, PGT_l4_page_table)` took on my setup (for HVM with 2GB of memory) about 3 seconds for each destroying domain. With holding the lock it took only 100 ms. Signed-off-by: Dmitry Isaykin <isaikin-dmitry@xxxxxxxxx> --- xen/common/domctl.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/xen/common/domctl.c b/xen/common/domctl.c index 12d6144d28..b9a50d3e5d 100644 --- a/xen/common/domctl.c +++ b/xen/common/domctl.c @@ -497,14 +497,13 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) break; case XEN_DOMCTL_destroydomain: - domctl_lock_release(); domain_lock(d); ret = domain_kill(d); domain_unlock(d); if ( ret == -ERESTART ) ret = hypercall_create_continuation( __HYPERVISOR_domctl, "h", u_domctl); - goto domctl_out_unlock_domonly; + break; case XEN_DOMCTL_setnodeaffinity: { -- 2.33.0
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |