From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Claudio Imbrenda <imbrenda@linux.ibm.com>
Cc: thuth@redhat.com, frankja@linux.ibm.com, david@redhat.com,
cohuck@redhat.com, qemu-devel@nongnu.org, borntraeger@de.ibm.com,
pbonzini@redhat.com
Subject: Re: [PATCH v1 1/1] osdep: asynchronous teardown for shutdown on Linux
Date: Mon, 6 Dec 2021 11:21:10 +0000 [thread overview]
Message-ID: <Ya3yJoUh97+B2EYJ@redhat.com> (raw)
In-Reply-To: <20211206110611.27283-1-imbrenda@linux.ibm.com>
On Mon, Dec 06, 2021 at 12:06:11PM +0100, Claudio Imbrenda wrote:
> This patch adds support for asynchronously tearing down a VM on Linux.
>
> When qemu terminates, either naturally or because of a fatal signal,
> the VM is torn down. If the VM is huge, it can take a considerable
> amount of time for it to be cleaned up. In case of a protected VM, it
> might take even longer than a non-protected VM (this is the case on
> s390x, for example).
>
> Some users might want to shut down a VM and restart it immediately,
> without having to wait. This is especially true if management
> infrastructure like libvirt is used.
>
> This patch implements a simple trick on Linux to allow qemu to return
> immediately, with the teardown of the VM being performed
> asynchronously.
>
> If the new commandline option -async-teardown is used, a new process is
> spawned from qemu using the clone syscall, so that it will share its
> address space with qemu.
>
> The new process will then wait until qemu terminates, and then it will
> exit itself.
>
> This allows qemu to terminate quickly, without having to wait for the
> whole address space to be torn down. The teardown process will exit
> after qemu, so it will be the last user of the address space, and
> therefore it will take care of the actual teardown.
>
> The teardown process will share the same cgroups as qemu, so both
> memory usage and cpu time will be accounted properly.
If this suggested workaround has any benefit to the shutdown of a VM
with libvirt, then it is a bug in libvirt IMHO.
When libvirt tears down a QEMU VM, it should be waiting for *every*
process in the VM's cgroup to be terminated before it reports that
the VM is shutoff. IOW, the fact that this workaround lets the main
QEMU process exit quickly should not matter. libvirt should still
be blocked in exactly the same place in its code, waiting for the
"async" cleanup process to exit. IOW, this should not be async at
all from libvirt's POV.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2021-12-06 11:22 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-06 11:06 [PATCH v1 1/1] osdep: asynchronous teardown for shutdown on Linux Claudio Imbrenda
2021-12-06 11:21 ` Daniel P. Berrangé [this message]
2021-12-06 11:43 ` Claudio Imbrenda
2021-12-06 11:47 ` Daniel P. Berrangé
2021-12-06 12:15 ` Claudio Imbrenda
2021-12-06 12:27 ` Daniel P. Berrangé
2021-12-07 14:59 ` Halil Pasic
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=Ya3yJoUh97+B2EYJ@redhat.com \
--to=berrange@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).