Bagaimana cara menetapkan batas memori untuk proses tertentu?


10

Saya mencoba mengeksekusi mpiexec -16 ...pada server RAM 384 GB, tetapi itu diinduksi OOM Killer dan dibatalkan.

Bagaimana saya bisa menetapkan batas memori untuk mpiexeceksekusi?

Saya tahu ulimit, tapi itu mungkin memengaruhi proses lain.

Terima kasih.

Jawaban:


9

Saya pikir ini bisa dilakukan dengan menggunakan cgroups:

Buat cgroup bernama mpigroup(atau nama apa pun yang Anda pilih) dengan batas memori (50GB, misalnya):

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

Kemudian, jika mpiexec sudah berjalan, bawa ke cgroup ini:

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

Atau jalankan mpiexecdalam cgroup ini:

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

Bukankah seharusnya memorypengontrol cukup cgcreate -g memory:mpigroup:?
heemayl

@ heemayl seharusnya. Saya baru saja mengangkat contoh ini langsung dari wiki
muru

Pengaturan disimpan di / sys / fs / cgroup / memory /, dan untuk bekerja sudo diperlukan bahkan jika itu tidak gagal saat tidak menggunakan sudo
Aquarius Power

Saya berhasil membatasi memori fisik menjadi 2GB, bekerja dengan sempurna, tetapi memori virtualnya masih menjadi 8GB, tapi itu benar-benar baik karena permainan anggur hanya akan menggunakan swap daripada mengirim semua aplikasi linux lainnya untuk bertukar, dan itu membuat seluruh sistem bekerja lebih baik! Terima kasih!
Aquarius Power
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.