From: Julien Grall <julien@xen.org> To: Hongyan Xia <hx242@xen.org>, xen-devel@lists.xenproject.org Cc: Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Andrew Cooper <andrew.cooper3@citrix.com>, Ian Jackson <ian.jackson@eu.citrix.com>, George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com> Subject: Re: [Xen-devel] [PATCH] Revert "domctl: improve locking during domain destruction" Date: Tue, 24 Mar 2020 18:40:14 +0000 [thread overview] Message-ID: <bb0a51e4-2024-011b-39c3-23331df8f982@xen.org> (raw) In-Reply-To: <de46590ad566d9be55b26eaca0bc4dc7fbbada59.1585063311.git.hongyxia@amazon.com> On 24/03/2020 15:21, Hongyan Xia wrote: > From: Hongyan Xia <hongyxia@amazon.com> > > Unfortunately, even though that commit dropped the domctl lock and > allowed other domctl to continue, it created severe lock contention > within domain destructions themselves. Multiple domain destructions in > parallel now spin for the global heap lock when freeing memory and could > spend a long time before the next hypercall continuation. In contrast, > after dropping that commit, parallel domain destructions will just fail > to take the domctl lock, creating a hypercall continuation and backing > off immediately, allowing the thread that holds the lock to destroy a > domain much more quickly and allowing backed-off threads to process > events and irqs. > > On a 144-core server with 4TiB of memory, destroying 32 guests (each > with 4 vcpus and 122GiB memory) simultaneously takes: > > before the revert: 29 minutes > after the revert: 6 minutes > > This is timed between the first page and the very last page of all 32 > guests is released back to the heap. > > This reverts commit 228ab9992ffb1d8f9d2475f2581e68b2913acb88. > > Signed-off-by: Hongyan Xia <hongyxia@amazon.com> Reviewed-by: Julien Grall <julien@xen.org> > --- > xen/common/domain.c | 11 +---------- > xen/common/domctl.c | 5 +---- > 2 files changed, 2 insertions(+), 14 deletions(-) > > diff --git a/xen/common/domain.c b/xen/common/domain.c > index b4eb476a9c..7b02f5ead7 100644 > --- a/xen/common/domain.c > +++ b/xen/common/domain.c > @@ -698,20 +698,11 @@ int domain_kill(struct domain *d) > if ( d == current->domain ) > return -EINVAL; > > - /* Protected by d->domain_lock. */ > + /* Protected by domctl_lock. */ > switch ( d->is_dying ) > { > case DOMDYING_alive: > - domain_unlock(d); > domain_pause(d); > - domain_lock(d); > - /* > - * With the domain lock dropped, d->is_dying may have changed. Call > - * ourselves recursively if so, which is safe as then we won't come > - * back here. > - */ > - if ( d->is_dying != DOMDYING_alive ) > - return domain_kill(d); > d->is_dying = DOMDYING_dying; > argo_destroy(d); > evtchn_destroy(d); > diff --git a/xen/common/domctl.c b/xen/common/domctl.c > index a69b3b59a8..e010079203 100644 > --- a/xen/common/domctl.c > +++ b/xen/common/domctl.c > @@ -571,14 +571,11 @@ 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: > { > -- Julien Grall
prev parent reply other threads:[~2020-03-24 18:40 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-03-24 15:21 Hongyan Xia 2020-03-24 16:13 ` Jan Beulich 2020-03-24 18:39 ` Julien Grall 2020-03-25 7:11 ` Jan Beulich 2020-03-26 14:39 ` Hongyan Xia 2020-03-26 16:55 ` Jim Fehlig 2020-03-31 10:31 ` Julien Grall 2020-03-24 18:40 ` Julien Grall [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bb0a51e4-2024-011b-39c3-23331df8f982@xen.org \ --to=julien@xen.org \ --cc=andrew.cooper3@citrix.com \ --cc=george.dunlap@citrix.com \ --cc=hx242@xen.org \ --cc=ian.jackson@eu.citrix.com \ --cc=jbeulich@suse.com \ --cc=sstabellini@kernel.org \ --cc=wl@xen.org \ --cc=xen-devel@lists.xenproject.org \ --subject='Re: [Xen-devel] [PATCH] Revert "domctl: improve locking during domain destruction"' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).