diff mbox series

[bug#64260] Use cgroups v2 file system

Message ID hC7GiiLV5qxJ0WSDTRmDmy4V2wsy6yraRPcoC4UC2WAhEyNCb69vCjBYKYVHmF1NS65HyWYD-jBliH_Gq5LwAO_2WPlhqq2ekBWI0FYyFxc=@samlockart.com
State New
Headers show
Series [bug#64260] Use cgroups v2 file system | expand

Commit Message

Sam Lockart June 24, 2023, 3:11 a.m. UTC
cgroup v2 is the next generation of the control groups API.
This patch replaces the cgroup v1 file system with the unified
cgroup v2 file system.

cgroup v2 allows for things like containerd/podman to run rootless containers and opens guix system up to running things like Kubernetes.

* gnu/system/file-systems.scm: Use cgroups v2 file system
---
 gnu/system/file-systems.scm | 27 +++++++--------------------
 1 file changed, 7 insertions(+), 20 deletions(-)

Comments

Brian Cully July 5, 2023, 8:52 p.m. UTC | #1
I've been running this patch for a few days with an elogind-based system
and haven't had any issues. This patch also fixes rootless podman with
elogind, which is very nice.

-bjc
Hilton Chain Aug. 2, 2023, 4:39 a.m. UTC | #2
Hi,

On Thu, 06 Jul 2023 04:52:34 +0800,
Brian Cully via Guix-patches via wrote:
>
> I've been running this patch for a few days with an elogind-based system
> and haven't had any issues. This patch also fixes rootless podman with
> elogind, which is very nice.
>
> -bjc

I'm not familiar with cgroup, but the current %control-groups is
a requirement for docker-shepherd-service:
--8<---------------cut here---------------start------------->8---
(shepherd-service
       (documentation "Docker daemon.")
       (provision '(dockerd))
       (requirement '(containerd
                      dbus-system
                      elogind
                      file-system-/sys/fs/cgroup/blkio
                      file-system-/sys/fs/cgroup/cpu
                      file-system-/sys/fs/cgroup/cpuset
                      file-system-/sys/fs/cgroup/devices
                      file-system-/sys/fs/cgroup/memory
                      file-system-/sys/fs/cgroup/pids
                      networking
                      udev))
--8<---------------cut here---------------end--------------->8---

Thanks
Ludovic Courtès Aug. 8, 2023, 3:08 p.m. UTC | #3
Hello Sam,

Sam Lockart <sam@samlockart.com> skribis:

> cgroup v2 is the next generation of the control groups API.
> This patch replaces the cgroup v1 file system with the unified
> cgroup v2 file system.
>
> cgroup v2 allows for things like containerd/podman to run rootless containers and opens guix system up to running things like Kubernetes.
>
> * gnu/system/file-systems.scm: Use cgroups v2 file system

[...]

Hilton Chain <hako@ultrarare.space> skribis:

> I'm not familiar with cgroup, but the current %control-groups is
> a requirement for docker-shepherd-service:

Good point!  Finally applied, with the change Hilton suggested.

This passes just fine:

  make check-system TESTS="docker basic elogind"

Thanks,
Ludo’.
diff mbox series

Patch

diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 0ff5a0dcf6..59e04bcecf 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -445,26 +445,13 @@  (define %immutable-store
     (flags '(read-only bind-mount no-atime))))
 
 (define %control-groups
-  (let ((parent (file-system
-                  (device "cgroup")
-                  (mount-point "/sys/fs/cgroup")
-                  (type "tmpfs")
-                  (check? #f))))
-    (cons parent
-          (map (lambda (subsystem)
-                 (file-system
-                   (device "cgroup")
-                   (mount-point (string-append "/sys/fs/cgroup/" subsystem))
-                   (type "cgroup")
-                   (check? #f)
-                   (options subsystem)
-                   (create-mount-point? #t)
-
-                   ;; This must be mounted after, and unmounted before the
-                   ;; parent directory.
-                   (dependencies (list parent))))
-               '("cpuset" "cpu" "cpuacct" "memory" "devices" "freezer"
-                 "blkio" "perf_event" "pids")))))
+  ;; The cgroup2 file system.
+  (list (file-system
+           (device "none")
+	   (mount-point "/sys/fs/cgroup")
+	   (type "cgroup2")
+	   (check? #f)
+	   (create-mount-point? #f))))
 
 (define %elogind-file-systems
   ;; We don't use systemd, but these file systems are needed for elogind,