From 14b69596b0bff64f7482d93ea3f043520a716921 Mon Sep 17 00:00:00 2001 From: rpm-build Date: Thu, 8 Jun 2023 20:02:50 +0800 Subject: [PATCH] set the cpuset.cpus/mems of machine.slice to all by default This is necessary after merging core-cgroup-support-cpuset.patch. When creating a vm, libvirt will issue a dbus method_call to systemd-machined. systemd-machined will start transient unit usually named xxx.scope with Delegate=1 set after receiving the method_call. If Delegate=1 is set, systemd will create machine.slice in /sys/fs/cgroup for every cgroup subsystem, this includes cpuset. cpuset is different, you can't migrate processes to the created directory unless you have set proper cpuset.cpus and cpuset.mems. Without this patch, libvirt sees machine.slice, it won't check if cpuset.cpus or cpuset.mems is valid, and just migrate the vm process to machine.slice. This action will fail because core-cgroup -support-cpuset.patch only supports create the machine.slice directory when Delegate=1 is set, but won't set cpuset.cpus and cpuset.mems automatically. Now we have this patch, it will make systemd automatically set cpuset.cpus and cpuset.mems according to /sys/fs/cgroup/cpuset/{ cpuset.cpus, cpuset.mems}. Then libvirt can migrate vm processes freely. --- units/machine.slice | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/units/machine.slice b/units/machine.slice index 501d353..8d87851 100644 --- a/units/machine.slice +++ b/units/machine.slice @@ -11,3 +11,8 @@ Description=Virtual Machine and Container Slice Documentation=man:systemd.special(7) Before=slices.target + +[Slice] +CPUSetCpus=all +CPUSetMems=all +CPUSetCloneChildren=1 -- 2.33.0