Cgroups with systemd: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 9: | Zeile 9: | ||
=Servicedateien bearbeiten= | =Servicedateien bearbeiten= | ||
*Lassen Sie uns die Unit-Datei selbst bearbeiten. | *Lassen Sie uns die Unit-Datei selbst bearbeiten. | ||
| − | * | + | *Die maximale CPU-Auslastung soll begrenzt werden |
| − | ==Unit | + | *einmal 20% und einmal 40% |
| − | */etc/systemd/system/ | + | ==Unit Dateien== |
| + | *cat /etc/systemd/system/gen-load-20.service | ||
<pre> | <pre> | ||
| + | [Unit] | ||
| + | Description=CPU usage limiting test | ||
| + | |||
[Service] | [Service] | ||
Type=oneshot | Type=oneshot | ||
| Zeile 19: | Zeile 23: | ||
StandardOutput=tty | StandardOutput=tty | ||
RemainAfterExit=yes | RemainAfterExit=yes | ||
| + | CPUQuota=20% | ||
[Install] | [Install] | ||
| − | WantedBy= | + | WantedBy=default.target |
| + | </pre> | ||
| + | |||
| + | *cat /etc/systemd/system/gen-load-40.service | ||
| + | <pre> | ||
| + | [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 | ||
</pre> | </pre> | ||
==Das Skript== | ==Das Skript== | ||
*cat /usr/local/bin/generate_load.sh | *cat /usr/local/bin/generate_load.sh | ||
| + | |||
#!/bin/bash | #!/bin/bash | ||
/usr/bin/cat /dev/urandom > /dev/null & | /usr/bin/cat /dev/urandom > /dev/null & | ||
=Starten des Dienstes= | =Starten des Dienstes= | ||
| − | *systemcl start | + | *systemcl start gen-load-20.service |
| − | *systemd- | + | *systemcl start gen-load-40.service |
| + | *systemd-cgtop | ||
| + | |||
| + | =Status= | ||
| + | *systemd-cgtop | ||
<pre> | <pre> | ||
| − | Control | + | 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 - - | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
</pre> | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=Links= | =Links= | ||
*https://www.redhat.com/sysadmin/cgroups-part-four | *https://www.redhat.com/sysadmin/cgroups-part-four | ||
Version vom 11. Januar 2023, 14:32 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.
- 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 &
Starten des Dienstes
- systemcl start gen-load-20.service
- systemcl 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 - -