Linux บนหน่วยความจำ iMX6 และ CMA


2

เรามีระบบลินุกซ์ในตัว (yocto 1.8) ที่ทำงานบนบอร์ด i.MX6 พร้อม RAM ขนาด 1GB เคอร์เนลถูกกำหนดค่าให้มี CMA สงวนไว้ 320MByte และไม่มีการสลับ เคอร์เนล 3.10.53

เมื่อเรารันแอปพลิเคชันทดสอบขนาดเล็กเพียงเพื่อกินหน่วยความจำเราจะเห็นพฤติกรรมแปลก ๆ เมื่อเราเข้าถึงฟรีประมาณ 250MByte บัฟเฟอร์ / แคชเริ่มลดลงและหน่วยความจำว่างจะอยู่ที่ประมาณ 250MByte หากเราจัดสรรหน่วยความจำไว้เรื่อย ๆ ระบบก็จะเฉื่อยมากขึ้นเรื่อย ๆ จนกว่ามันจะหยุดชะงักอย่างสมบูรณ์หรือ OOM killer kicks

ฉันคิดว่าสิ่งที่ฉันสงสัยคือวิธีการทำงานของ CMA จริงเพราะเราปิดการใช้งาน CMA เราจะเห็นพฤติกรรมเช่นเดียวกับข้างต้น แต่มันเกิดขึ้นเมื่อเรามีประมาณ 40-50MBytes และฉันเชื่อว่าเป็นที่คาดหวัง หลังจากอ่านเกี่ยวกับ CMA ฉันเชื่อว่าสระไม่ควรถูกระงับอย่างสมบูรณ์จากระบบมันควรจะยังคงทำงานได้สำหรับแคช ฯลฯ แต่ในกรณีของเราดูเหมือนว่าระบบจะทิ้งแคชในขณะที่หน่วยความจำเหลืออยู่มากมาย

ไม่มีใครรู้ว่านี่เป็นพฤติกรรมที่คาดหวังหรือหากมีสถานที่ที่ดีกว่าที่จะวางคำถามนี้

แก้ไข: ดูเหมือนว่าเราได้เปลี่ยนค่าของ vm.min_free_kbytes เป็น 32MBytes การเปลี่ยนกลับเป็นค่าเริ่มต้นดูเหมือนจะช่วยให้เราสามารถใช้หน่วยความจำทั้งหมด

เรายังไม่แน่ใจว่า CMA นั้นมีผลกระทบต่อระบบอย่างไร แต่อาจไม่สำคัญอีกต่อไป


ไม่แน่ใจว่าวิธีการทำงานของ CMA แต่ malloc สามัญ () ใช้จัดสรรหน่วยความจำในแง่ดี ดูlinuxdevcenter.com/pub/a/linux/2006/11/30/…
sawdust
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.