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