Cgroups with systemd
Version vom 11. Januar 2023, 14:32 Uhr von Linkai.zhang (Diskussion | Beiträge)
- Standardmäßig erstellt systemd eine neue cgroup unter system.slice für jeden Dienst, den es überwacht.
- Das ausführen von systemd-cgls zeigt die folgenden Dienste unter system.slice (die Ausgabe ist der Kürze halber abgeschnitten):
- Sie können dieses Verhalten ändern, indem Sie die systemd-Dienstdatei bearbeiten.
- Es gibt drei Optionen in Bezug auf die cgroup-Verwaltung mit systemd:
- Bearbeiten der Servicedatei selbst.
- Verwendung von Drop-in-Dateien.
- Verwenden von systemctl set-property-Befehlen, die mit dem manuellen Bearbeiten der Dateien identisch sind, aber systemctl erstellt die erforderlichen Einträge für Sie.
Auf diese gehe ich weiter unten näher ein.
Servicedateien bearbeiten
- Lassen Sie uns die Unit-Datei selbst bearbeiten.
- Die maximale CPU-Auslastung soll begrenzt werden
- einmal 20% und einmal 40%
Unit Dateien
- cat /etc/systemd/system/gen-load-20.service
[Unit] Description=CPU usage limiting test [Service] Type=oneshot ExecStart=/usr/local/bin/generate_load.sh TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes CPUQuota=20% [Install] WantedBy=default.target
- cat /etc/systemd/system/gen-load-40.service
[Unit] Description=CPU usage limiting test [Service] Type=oneshot ExecStart=/usr/local/bin/generate_load.sh TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes CPUQuota=40% [Install] WantedBy=default.target
Das Skript
- cat /usr/local/bin/generate_load.sh
#!/bin/bash /usr/bin/cat /dev/urandom > /dev/null &
Starten des Dienstes
- systemcl start gen-load-20.service
- systemcl start gen-load-40.service
- systemd-cgtop
Status
- systemd-cgtop
Control Group Tasks %CPU Memory Input/s Output/s / 108 66.6 816.5M - - system.slice 17 62.5 80.2M - - system.slice/gen-load-40.service 1 '''41.9''' 300.0K - - system.slice/gen-load-20.service 1 '''20.4''' 300.0K - -