Il peut arriver que l’on souhaite empêcher qu’un processus n’utilise trop de RAM. Il existe différent moyen de limiter l’utilisation de la mémoire d’un processus sous linux.
Avec Systemd
Sous sytemd, l’option MemoryLimit vous permet de le faire :
systemd-run --scope -p MemoryLimit=5K macommande
Avec Ulimit
ulimit -Sv 100000
Ici nous limittons les futurs programmes lancés à 100 mb d’utilisation mémoire.
Vous pouvez obtenir vôtre profil avec la commande suivante : ulimit -v
Avec les groupes de contrôle
Ici on ne limite qu’à 100 mb de RAM et 200 mb de SWAP sur les programmes qui seront ajoutés à notre groupe. A la différence des deux précédentes méthodes, nous pouvons définir une limite pour la RAM et le SWAP.
Ici nous allons créer un groupe nommé software_limitted_100MB.
cgcreate -g memory:software_limitted_500MB
echo 100M > /sys/fs/cgroup/memory/software_limitted_500MB/memory.limit_in_bytes
echo 200M > /sys/fs/cgroup/memory/software_limitted_500MB/memory.memsw.limit_in_bytes
Documentation : https://linux.die.net/man/1/cgcreate
Afin que votre système puisse prendre en charge ces paramètres vous devez modifier votre grub (/etc/default/grub) en rajoutant les options suivantes :
GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
Ensuite exécuter vos programmes depuis le groupes crée :
cgexec -g memory:
software_limitted_500MB
mon_programme
Si vous devez supprimer le groupe, la commande cgdelete fera le travail :
cgdelete "memory:software_limitted_500MB
"