Linux หน่วยความจำ overcommit


12

ฉันใช้หน่วยความจำมากเกินไปในการใช้ 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 นั่นคือสิ่งที่ตรงกันข้ามกับสิ่งที่หมอคนก่อนกล่าวว่าใช่มั้ย

ไม่มีใครรู้ว่าสิ่งใดที่ถูกต้องจริงและถ้าเป็นไปได้ที่จะ 'ปิดการใช้งาน' ทับซ้อน?


ลืมเรื่องนี้! ขอโทษสำหรับเรื่องนั้น.
Doddy

คำตอบ:


8

นิตยสาร Red Hat มี 1 และ 2 กลับด้าน ระวังข้อผิดพลาดที่อาจทำให้ไม่สามารถปิดใช้งาน overcommitting ได้เช่นhttps://bugs.launchpad.net/ubuntu/+source/glibc/+bug/345601


จริง ดูความคิดเห็นล่าสุดได้ที่saltwebsites.com/2012/install-redis-245-service-centos-6ซึ่งยืนยันสิ่งนี้
Fletch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.