Cgroups with systemd: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
| + | =Prinzip= | ||
*Standardmäßig erstellt systemd eine neue cgroup unter system.slice für jeden Dienst, den es überwacht. | *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): | *Das ausführen von systemd-cgls zeigt die folgenden Dienste unter system.slice (die Ausgabe ist der Kürze halber abgeschnitten): | ||
Version vom 15. Januar 2023, 08:36 Uhr
Prinzip
- 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 der Dienste
- 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 - -