Certaines applications ou processus spécifiques peuvent nécessiter des valeurs de ressources supérieures aux valeurs par défaut attribuées par systemd. Il est possible de remplacer les limites de ressources par défaut attribuées par systemd.
En gros, systemd définit les limites par défaut pour tout processus lorsqu'il démarre. Par exemple :
# cat /proc/1696/limits | grep "Max locked memory" Max locked memory 65536 65536 bytes
Dans l'exemple ci-dessus, la Mémoire maximale verrouillée est de 64K pour le PID 1696, et pour certains processus ou applications, cela peut ne pas suffire. Il existe plusieurs façons de changer cela.
Méthode 1 - Changer globalement
Modifiez la valeur par défaut globalement, cela prendra effet pour tous les processus. Editez le fichier /etc/systemd/system.conf et modifiez-y la valeur.
1. Si vous cochez, par défaut cette valeur sera commentée et donc le 64K par défaut est en vigueur.
# cat /etc/systemd/system.conf | grep DefaultLimitMEMLOCK #DefaultLimitMEMLOCK=
2. Pour changer cela, modifiez le fichier et décommentez la ligne de ressource souhaitée et ajoutez la valeur souhaitée. Par exemple.
# vi /etc/systemd/system.conf DefaultLimitMEMLOCK=128000
Cela changera la mémoire maximale verrouillée pour le processus "tout" à 128K lorsqu'il démarrera.
Méthode 2 – Modification pour un service ou un processus spécifique
Si l'exigence est de modifier la limite de ressources pour un processus ou une application spécifique, la méthode ci-dessous vous aidera.
1. Pour modifier la valeur de la ressource pour un processus/service spécifique.
Cela peut être fait en éditant le fichier d'unité de service et en y ajoutant le détail de la limite avec la section service. Exemple ci-dessous pour le service "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
Avec le fichier d'unité de service ci-dessus, la nouvelle ligne "LimitMEMLOCK =128000" attribuera 128K Max Locked Memory pour le processus spécifique lors de son démarrage. Tous les autres processus auront la valeur par défaut selon systemd.