[pve-devel] [PATCH qemu-server 1/2] use KillMode 'process' for systemd scope
Thomas Lamprecht
t.lamprecht at proxmox.com
Tue Jun 22 08:02:55 CEST 2021
On 21.06.21 18:35, Stefan Reiter wrote:
> KillMode 'none' is deprecated, and systemd loudly complains about that
> in the journal. To avoid the warning, but keep the behaviour the same,
> use KillMode 'process'.
>
> This mode does two things differently, which we have to stop it from
> doing:
> * it sends SIGTERM right when the scope is cancelled (e.g. on shutdown)
> -> but only to the "root" process, which in our case is the worker
> instance forking QEMU, so it is already dead by the time this happens
> * it sends SIGKILL to *all* children after a timeout
> -> can be avoided by setting either SendSIGKILL to false, or
> TimeoutStopUSec to infinity - for safety, we do both
>
> In my testing, this replicated the previous behaviour exactly, but
> without using the deprecated 'none' mode.
>
> Signed-off-by: Stefan Reiter <s.reiter at proxmox.com>
> ---
>
> Depends on updated pve-common from patch 2.
>
> PVE/QemuServer.pm | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
> index 07dd14a..d5b7ead 100644
> --- a/PVE/QemuServer.pm
> +++ b/PVE/QemuServer.pm
> @@ -5286,7 +5286,9 @@ sub vm_start_nolock {
>
> my %properties = (
> Slice => 'qemu.slice',
> - KillMode => 'none'
> + KillMode => 'process',
> + SendSIGKILL => 0,
> + TimeoutStopUSec => ULONG_MAX, # infinity
I wasn't sure if ULONG_MAX is used literally, making 71 minutes on 32 bit and ~584k years
on 64bit, or if it is translated internally to 'infinity', I mean with us only supporting
64-bit a duration of 584k year, while not infinity, would be more than enough, but still,
always good to check those things IMO:
>From `src/basic/time-util.h`
typedef uint64_t usec_t;
...
#define USEC_INFINITY ((usec_t) -1)
So, yes, literally means infinity.
More information about the pve-devel
mailing list