ฉันใช้หน่วยความจำมากเกินไปในการใช้ Linux /proc/sys/vm/overcommit_memory
และฉันได้อ่านบทความสองสามฉบับที่ไม่ได้พูดในสิ่งเดียวกัน
เอกสารนี้ภายใต้หัวข้อ "ไปในทิศทางที่ไม่ถูกต้อง" จะกล่าวต่อไปว่า "ค่า 1: ทำ overcommit และ 0 (ค่าเริ่มต้น): ไม่" แต่ในอีกไม่กี่บรรทัดถัดไปจะกล่าวถึงในทำนองเดียวกัน สิ่งต่าง ๆ , สิ่งนี้ไม่เป็นความจริงและ 0 หมายถึง "คาดเดาว่าการวางทับมากเกินไปนั้นสมเหตุสมผล" นั่นหมายความว่าหน่วยความจำทับซ้อนไม่ได้ถูกปิดใช้งานโดยใช้ค่า 0 ใช่ไหม
นอกจากนี้ยังระบุว่า 1 ระบุว่า "ไม่ปฏิเสธ malloc ()" ใด ๆ ที่มี 2 ความหมาย "แม่นยำเกี่ยวกับ overcommit - ไม่ต้องใช้พื้นที่ที่อยู่เสมือนที่ใหญ่กว่า swap space บวกกับเศษส่วน overcommit_ratio ของหน่วยความจำกายภาพ"
ในทางตรงกันข้ามนิตยสาร Red Hatระบุว่า "ถ้าค่าเป็น 0 แล้วเคอร์เนลจะตรวจสอบว่ามีหน่วยความจำเพียงพอที่จะให้หน่วยความจำร้องขอไปยังการเรียก malloc จากแอปพลิเคชันหรือไม่หากมีหน่วยความจำเพียงพอ ได้รับการร้องขอมิฉะนั้นจะถูกปฏิเสธและรหัสข้อผิดพลาดจะถูกส่งกลับไปยังแอปพลิเคชัน " นี้เสียงเหมือนการปิดใช้งาน overcommit
"ถ้าค่าถูกตั้งค่าเป็น 1 ดังนั้นเคอร์เนลจะจัดสรรมากกว่าจำนวน RAM ทางกายภาพและสลับในระบบตามที่กำหนดโดยค่า overcommit_ratio ... ถ้าการตั้งค่าในไฟล์นี้เป็น 2 เคอร์เนลอนุญาตการจัดสรรหน่วยความจำทั้งหมด โดยไม่คำนึงถึงสถานะการจัดสรรหน่วยความจำปัจจุบัน " ในแง่ของค่า 1 และ 2 นั่นคือสิ่งที่ตรงกันข้ามกับสิ่งที่หมอคนก่อนกล่าวว่าใช่มั้ย
ไม่มีใครรู้ว่าสิ่งใดที่ถูกต้องจริงและถ้าเป็นไปได้ที่จะ 'ปิดการใช้งาน' ทับซ้อน?