Cgroups with systemd: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 22: Zeile 22:
 
...
 
...
 
</pre>
 
</pre>
 +
*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:
 +
 +
*/etc/systemd/system/generate-load.service
 +
<pre>
 +
[Service]
 +
Type=oneshot
 +
ExecStart=/usr/local/bin/generate_load.sh
 +
TimeoutSec=0
 +
StandardOutput=tty
 +
RemainAfterExit=yes
 +
 +
[Install]
 +
WantedBy=multi-user.target
 +
</pre>
 +
 +
 +
 +
 
=Verwendung von Drop-in-Dateien=
 
=Verwendung von Drop-in-Dateien=
 
*Drop-in-Dateien für systemd sind ziemlich einfach einzurichten.  
 
*Drop-in-Dateien für systemd sind ziemlich einfach einzurichten.  

Version vom 11. Januar 2023, 13:36 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:
  • /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



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: