มีการอธิบายที่นี่ว่า OOM-Killer สามารถกำหนดค่าผ่านทางovercommit_memory
และ:
- 2 = ไม่มี overcommit การจัดสรรล้มเหลวหากถามมากเกินไป
- 0, 1 = overcommit (heuristically หรือเสมอ) ฆ่ากระบวนการบางอย่างโดยยึดตามฮิวริสติกเมื่อเข้าถึงหน่วยความจำมากเกินไป
ตอนนี้ฉันอาจเข้าใจผิดทั้งหมด แต่ทำไมไม่มีตัวเลือก (หรือทำไมจึงไม่เป็นค่าเริ่มต้น) เพื่อฆ่ากระบวนการที่พยายามเข้าถึงหน่วยความจำที่จัดสรรมากเกินไป
เกิดอะไรขึ้นถ้ากระบวนการระบบที่สำคัญถามหน่วยความจำมากเกินไป
—
Lawrence
ในสถานที่แรก - มันสามารถทำสิ่งนี้ แต่ปัญหาที่ใหญ่ที่สุดของคำถามนั้นก็คือในทุกกรณีหากกระบวนการขอหน่วยความจำก็จะถูกดำเนินการใหม่หรือในคำอื่น ๆ นี่เป็นกระบวนการใหม่ที่เกี่ยวข้องกับการประมวลผลในปัจจุบัน คุณต้องการที่จะให้ OOM อนุญาตให้ลูกค้า im ที่ไม่เปิดใช้งานนาน 3 วันทำการเก็บความทรงจำของระบบหรือไม่หรือคุณอยากให้ YouTube โหลดจริง ๆ ในปีนี้บ้างไหม linuxatemyram.com
—
mikeserv
นี่คือสิ่งที่เป็น
—
Barmar
no overcommit
ตัวเลือก หากกระบวนการขอหน่วยความจำมากเกินไปก็จะล้มเหลว หากตรวจสอบข้อผิดพลาดมันมักจะฆ่าตัวเอง; หากไม่เป็นเช่นนั้นก็อาจได้รับข้อผิดพลาดการแบ่งกลุ่มเมื่อพยายามตรวจสอบตัวชี้โมฆะที่malloc()
ส่งคืนและพยายามล้มเหลว
โปรดทราบว่า 2 เป็น
—
hans_meine
no overcommit
โหมดตามแหล่งอ้างอิงที่อ้างถึง (เช่นkernel.org/doc/Documentation/vm/overcommit-accounting ) ฉันคิดว่าฉันจะแก้ไขคำถามของคุณตาม