วิธีตั้งค่าขีด จำกัด หน่วยความจำสำหรับกระบวนการเฉพาะ


10

ฉันพยายามรันmpiexec -16 ...บนเซิร์ฟเวอร์ RAM ขนาด 384 GB แต่มันเหนี่ยวนำให้เกิด OOM Killer และถูกยกเลิก

ฉันจะตั้งค่าขีด จำกัด หน่วยความจำสำหรับmpiexecการดำเนินการได้อย่างไร

ฉันรู้ulimitแต่อาจส่งผลกระทบต่อกระบวนการอื่น ๆ

ขอบคุณ.

คำตอบ:


9

ฉันคิดว่าสิ่งนี้สามารถทำได้โดยใช้cgroups:

สร้าง cgroup ชื่อmpigroup(หรือชื่ออะไรก็ได้ที่คุณเลือก) โดยมีขีด จำกัด หน่วยความจำ (เช่น 50GB):

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

จากนั้นหาก mpiexec ทำงานอยู่ให้นำมาไว้ใน cgroup นี้:

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

หรือดำเนินการmpiexecภายในกลุ่มนี้:

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

ไม่ควรmemoryควบคุมจะเพียงพอ: cgcreate -g memory:mpigroup?
heemayl

@ heemayl ควรเป็น ฉันเพิ่งยกตัวอย่างนี้ตรงจากวิกิ
muru

การตั้งค่าจะถูกเก็บไว้ที่ / sys / fs / cgroup / memory / และต้องใช้งาน sudo แม้ว่าจะไม่ล้มเหลวในขณะที่ไม่ได้ใช้ sudo
Aquarius Power

ฉันจัดการเพื่อ จำกัด หน่วยความจำกายภาพให้เหลือเพียง 2GB ทำงานได้อย่างสมบูรณ์แบบ แต่หน่วยความจำเสมือนยังคงอยู่ที่ 8GB แต่นั่นก็โอเคอย่างสมบูรณ์เพราะเกมไวน์จะใช้ swap แทนการส่งแอปพลิเคชัน linux อื่น ๆ ทั้งหมดเพื่อแลกเปลี่ยน ระบบทั้งหมดทำงานได้ดีขึ้น! ขอบคุณ!
กุมภ์อำนาจ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.