Cgroups with systemd: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
*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): | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
*Sie können dieses Verhalten ändern, indem Sie die systemd-Dienstdatei bearbeiten. | *Sie können dieses Verhalten ändern, indem Sie die systemd-Dienstdatei bearbeiten. | ||
*Es gibt drei Optionen in Bezug auf die cgroup-Verwaltung mit systemd: | *Es gibt drei Optionen in Bezug auf die cgroup-Verwaltung mit systemd: | ||
| Zeile 72: | Zeile 51: | ||
=Starten des Dienstes= | =Starten des Dienstes= | ||
*systemcl start generate-load.service | *systemcl start generate-load.service | ||
| + | *systemd-cgls | ||
| + | <pre> | ||
| + | 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 | ||
| + | ... | ||
| + | </pre> | ||
=Verwendung von Drop-in-Dateien= | =Verwendung von Drop-in-Dateien= | ||
Version vom 11. Januar 2023, 13:41 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):
- 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 &
- systemd-cgls
Control group /: -.slice... └─system.slice ├─prog.service │ └─47462 netcat -lp 99 -s 127.0.0.1 ├─systemd-udevd.service │ └─212 /lib/systemd/systemd-udevd ├─cron.service │ └─296 /usr/sbin/cron -f ├─systemd-journald.service │ └─192 /lib/systemd/systemd-journald ├─ssh.service │ └─410 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups ├─rsyslog.service │ └─303 /usr/sbin/rsyslogd -n -iN ├─generate-load.service │ └─50387 /usr/bin/cat /dev/urandom ...
Starten des Dienstes
- systemcl start generate-load.service
- 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 ...
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: