Cgroups with systemd: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 48: | Zeile 48: | ||
#!/bin/bash | #!/bin/bash | ||
/usr/bin/cat /dev/urandom > /dev/null & | /usr/bin/cat /dev/urandom > /dev/null & | ||
| + | =Starten des Dienstes= | ||
| + | *systemcl start | ||
=Verwendung von Drop-in-Dateien= | =Verwendung von Drop-in-Dateien= | ||
Version vom 11. Januar 2023, 13:38 Uhr
- 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):
- systemd-cgls
Control group /: -.slice ├─user.slice │ └─user-0.slice │ ├─session-44.scope │ │ ├─41569 sshd: root@pts/0 │ │ ├─41585 -bash │ │ ├─48030 systemd-cgls │ │ └─48031 pager │ ├─user@0.service … │ │ └─init.scope │ │ ├─41575 /lib/systemd/systemd --user │ │ └─41576 (sd-pam) │ └─session-46.scope │ ├─41663 sshd: root@pts/1 │ ├─41669 -bash │ └─47473 watch -n 1 ss -lntp | grep 99 ...
- 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.
- Dazu habe ich eine sehr einfache Unit-Datei erstellt, die ein Skript ausführt:
Unit Datei
- /etc/systemd/system/generate-load.service
[Service] Type=oneshot ExecStart=/usr/local/bin/generate_load.sh TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes [Install] WantedBy=multi-user.target
Das Skript
- cat /usr/local/bin/generate_load.sh
#!/bin/bash /usr/bin/cat /dev/urandom > /dev/null &
Starten des Dienstes
- systemcl start
Verwendung von Drop-in-Dateien
- Drop-in-Dateien für systemd sind ziemlich einfach einzurichten.
- Erstellen Sie zunächst ein geeignetes Verzeichnis basierend auf dem Namen Ihres Dienstes in /etc/systemd/system.
- Führen Sie im cat-Beispiel den folgenden Befehl aus:
- mkdir -p /etc/systemd/system/prog.service.d/
- Diese Dateien können beliebig organisiert werden.
- Sie werden basierend auf der numerischen Reihenfolge ausgeführt, daher sollten Sie Ihre Konfigurationsdateien etwa 10-CPUSettings.conf benennen.
- Alle Dateien in diesem Verzeichnis sollten die Dateierweiterung .conf haben und erfordern, dass Sie jedes Mal, wenn Sie eine dieser Dateien anpassen, systemctl daemon-reload ausführen.
- Ich habe zwei Drop-In-Dateien erstellt, um zu zeigen, wie Sie verschiedene Konfigurationen aufteilen können.
- Die erste ist 00-slice.conf. Wie unten zu sehen ist, richtet es die Standardoptionen für ein separates Slice für den cat-Dienst ein: