Cgroups with systemd simple: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „ =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…“)
 
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
  
  
=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=
 
=Servicedateien bearbeiten=
 
*Lassen Sie uns die Unit-Datei selbst bearbeiten.
 
*Lassen Sie uns die Unit-Datei selbst bearbeiten.
Zeile 53: Zeile 45:
 
  #!/bin/bash
 
  #!/bin/bash
 
  /usr/bin/cat /dev/urandom > /dev/null &
 
  /usr/bin/cat /dev/urandom > /dev/null &
 +
 +
*chmod +x /usr/local/bin/generate_load.sh
  
 
=Starten der Dienste=
 
=Starten der Dienste=
*systemcl start gen-load-20.service
+
*systemctl start gen-load-20.service
*systemcl start gen-load-40.service
+
*systemctl start gen-load-40.service
 
*systemd-cgtop
 
*systemd-cgtop
  
Zeile 67: Zeile 61:
 
  system.slice/gen-load-40.service      1  '''41.9'''  300.0K        -        -
 
  system.slice/gen-load-40.service      1  '''41.9'''  300.0K        -        -
 
  system.slice/gen-load-20.service      1  '''20.4'''  300.0K        -        -
 
  system.slice/gen-load-20.service      1  '''20.4'''  300.0K        -        -
 
=Links=
 
*https://www.redhat.com/sysadmin/cgroups-part-four
 

Aktuelle Version vom 18. Januar 2023, 12:19 Uhr


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 &
  • chmod +x /usr/local/bin/generate_load.sh

Starten der Dienste

  • systemctl start gen-load-20.service
  • systemctl 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        -        -