47 lines
1.7 KiB
Diff
47 lines
1.7 KiB
Diff
From 14b69596b0bff64f7482d93ea3f043520a716921 Mon Sep 17 00:00:00 2001
|
|
From: rpm-build <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
|
|
|