Come impostare un limite di memoria per un processo specifico?


10

Ho provato ad eseguire mpiexec -16 ...su un server RAM da 384 GB, ma ha indotto OOM Killer ed è stato interrotto.

Come posso impostare un limite di memoria per l' mpiexecesecuzione?

Lo so ulimit, ma potrebbe influenzare altri processi.

Grazie.

Risposte:


9

Penso che questo possa essere fatto usando cgroups:

Crea un cgroup chiamato mpigroup(o qualunque nome tu scelga) con un limite di memoria (ad esempio di 50 GB):

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

Quindi, se mpiexec è già in esecuzione, portalo in questo cgroup:

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

Oppure esegui mpiexecall'interno di questo cgroup:

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

Il memorycontroller non dovrebbe essere sufficiente cgcreate -g memory:mpigroup:?
heemayl

@heemayl dovrebbe essere. Ho appena sollevato questo esempio direttamente dal wiki
muru,

le impostazioni sono memorizzate in / sys / fs / cgroup / memory /, e per funzionare sudo è necessario anche se non fallisce mentre non si usa sudo
Aquarius Power

Sono riuscito a limitare la memoria fisica a 2 GB, ha funzionato perfettamente, ma la memoria virtuale stava ancora andando a 8 GB, ma era completamente ok perché il gioco del vino avrebbe semplicemente usato lo swap invece di inviare tutte le altre applicazioni linux allo scambio, e questo ha reso l'intero sistema funziona meglio! grazie!
Aquarius Power il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.