¿Cómo establecer un límite de memoria para un proceso específico?


10

Traté de ejecutar mpiexec -16 ...en un servidor de 384 GB de RAM, pero indujo a OOM Killer y fue abortado.

¿Cómo puedo establecer un límite de memoria para la mpiexecejecución?

Lo sé ulimit, pero podría afectar otros procesos.

Gracias.

Respuestas:


9

Creo que esto se puede hacer usando cgroups:

Cree un cgroup llamado mpigroup(o el nombre que elija) con un límite de memoria (de 50 GB, por ejemplo):

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

Luego, si mpiexec ya se está ejecutando, tráigalo a este cgroup:

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

O ejecutar mpiexecdentro de este cgroup:

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

¿No debería memoryser suficiente el controlador cgcreate -g memory:mpigroup?
heemayl

@heemayl debería ser. Acabo de levantar este ejemplo directamente de la wiki
muru

la configuración se almacena en / sys / fs / cgroup / memory /, y para trabajar sudo es necesario incluso si no falla mientras no se usa sudo
Aquarius Power

Logré limitar la memoria física a 2 GB, funcionó perfectamente, pero la memoria virtual todavía iba a 8 GB, pero eso estaba completamente bien porque el juego de vino solo usaría el intercambio en lugar de enviar todas las demás aplicaciones de Linux para intercambiar, y eso hizo ¡Todo el sistema funciona mejor! ¡Gracias!
Acuario Power
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.