Comment définir une limite de mémoire pour un processus spécifique?


10

J'ai essayé d'exécuter mpiexec -16 ...sur un serveur RAM de 384 Go, mais cela a provoqué OOM Killer et a été abandonné.

Comment puis-je définir une limite de mémoire pour l' mpiexecexécution?

Je sais ulimit, mais cela pourrait affecter d'autres processus.

Je vous remercie.

Réponses:


9

Je pense que cela peut être fait en utilisant cgroups:

Créez un groupe de contrôle nommé mpigroup(ou quel que soit le nom que vous choisissez) avec une limite de mémoire (de 50 Go, par exemple):

cgcreate -g memory,cpu:mpigroup
cgset -r memory.limit_in_bytes=$((50*1024*1024*1024)) mpigroup

Ensuite, si mpiexec est déjà en cours d'exécution, placez-le dans ce groupe de contrôle:

cgclassify -g memory,cpu:mpigroup $(pidof mpiexec)

Ou exécutez mpiexecdans ce groupe de contrôle:

cgexec -g memory,cpu:mpigroup mpiexec -16 ...

Le memorycontrôleur ne devrait-il pas suffire cgcreate -g memory:mpigroup:?
— heemayl

@heemayl devrait l'être. Je viens de retirer cet exemple directement du wiki
— muru

les paramètres sont stockés dans / sys / fs / cgroup / memory /, et pour fonctionner sudo est requis même s'il n'échoue pas sans utiliser sudo
— Aquarius Power

J'ai réussi à limiter la mémoire physique à 2 Go, fonctionnait parfaitement, mais la mémoire virtuelle allait toujours à 8 Go, mais c'était tout à fait correct parce que le jeu de vin utiliserait simplement l'échange au lieu d'envoyer toutes les autres applications Linux à échanger, et cela a fait l'ensemble du système fonctionne mieux! THX!
— Aquarius Power
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.