Cgroups with systemd: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(13 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
−
*Standardmäßig erstellt systemd eine neue cgroup unter system.slice für jeden Dienst, den es überwacht.  
+
*[[systemd.resource-control]]
−
*Das ausführen von systemd-cgls zeigt die folgenden Dienste unter system.slice (die Ausgabe ist der Kürze halber abgeschnitten):
+
*[[systemd.slice]]
−
*Sie können dieses Verhalten ändern, indem Sie die systemd-Dienstdatei bearbeiten.
+
*[[Cgroups with systemd simple]]
−
*Es gibt drei Optionen in Bezug auf die cgroup-Verwaltung mit systemd:
+
*[[Cgroups with systemd complex]]
−
**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
 
−
<pre>
 
−
[Service]
 
−
Type=oneshot
 
−
ExecStart=/usr/local/bin/generate_load.sh
 
−
TimeoutSec=0
 
−
StandardOutput=tty
 
−
RemainAfterExit=yes
 
−
 
 
−
[Install]
 
−
WantedBy=multi-user.target
 
−
</pre>
 
−
==Das Skript==
 
−
*cat /usr/local/bin/generate_load.sh
 
−
#!/bin/bash
 
−
/usr/bin/cat /dev/urandom > /dev/null &
 
−
 
 
−
=Starten des Dienstes=
 
−
*systemcl start generate-load.service
 
−
*systemd-cgls
 
−
<pre>
 
−
Control group /:
 
−
...
 
−
└─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 -iNONE
 
−
  ├─generate-load.service
 
−
  │ └─50387 /usr/bin/cat /dev/urandom
 
−
...
 
−
</pre>
 
−
 
 
−
=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:
 

Aktuelle Version vom 15. Januar 2023, 12:59 Uhr