Einige spezifische Anwendungen oder Prozesse benötigen möglicherweise höhere Ressourcenwerte als die standardmäßig systemd zugewiesenen Werte. Es ist möglich, die von systemd zugewiesenen Standardressourcenlimits zu überschreiben.
Grundsätzlich legt systemd die Standardgrenzen für jeden Prozess beim Start fest. Zum Beispiel:
# cat /proc/1696/limits | grep "Max locked memory" Max locked memory 65536 65536 bytes
Aus dem obigen Beispiel der Max Locked memory ist 64 KB für die PID 1696, und für einige Prozesse oder Anwendungen reicht dies möglicherweise nicht aus. Es gibt mehrere Möglichkeiten, dies zu ändern.
Methode 1 – Global ändern
Ändern Sie den Standardwert global. Dies wird für alle Prozesse wirksam. Bearbeiten Sie die Datei /etc/systemd/system.conf und dort den Wert ändern.
1. Wenn Sie diese Option aktivieren, wird dieser Wert standardmäßig auskommentiert und daher ist die Standardgröße von 64 KB wirksam.
# cat /etc/systemd/system.conf | grep DefaultLimitMEMLOCK #DefaultLimitMEMLOCK=
2. Um dies zu ändern, bearbeiten Sie die Datei und kommentieren Sie die gewünschte Ressourcenzeile aus und fügen Sie den gewünschten Wert hinzu. Zum Beispiel.
# vi /etc/systemd/system.conf DefaultLimitMEMLOCK=128000
Dadurch wird der maximale gesperrte Speicher für „alle“ Prozesse beim Start auf 128 KB geändert.
Methode 2 – Änderung für einen bestimmten Dienst oder Prozess
Wenn die Ressourcengrenze für einen bestimmten Prozess oder eine bestimmte Anwendung geändert werden muss, hilft die folgende Methode.
1. Um den Ressourcenwert für einen bestimmten Prozess/Dienst zu ändern.
Dazu bearbeiten Sie die Service Unit-Datei und fügen dort das Limit-Detail mit dem Service-Abschnitt hinzu. Beispiel wie unten für den Dienst „test“
# vi test.service [Unit] Description=TEST SERVICE Wants=network.target network-online.target autofs.service After=network.target network-online.target autofs.service [Service] Type=simple User=farmer ExecStart=/path/to/service/executable <> LimitMEMLOCK=128000 PIDFile=/var/run/test.pid [Install] WantedBy=multi-user.target
Bei der obigen Service-Unit-Datei weist die neue Zeile „LimitMEMLOCK=128000“ dem spezifischen Prozess beim Start 128K Max Locked Memory zu. Alle anderen Prozesse haben den Standardwert gemäß systemd.