Facebook ได้เสนอกลไกการจัดการหน่วยความจำแบบ Slab ใหม่สำหรับเคอร์เนล Linux

โรมัน กุชชิน (โรมัน กุชชิน) จากเฟซบุ๊ก ตีพิมพ์ ในรายชื่อผู้รับจดหมายของผู้พัฒนาเคอร์เนล Linux ชุดแพตช์พร้อมการใช้งานตัวควบคุมการจัดสรรหน่วยความจำใหม่ แผ่นหิน (ตัวควบคุมหน่วยความจำแบบแผ่น) คอนโทรลเลอร์ใหม่มีความโดดเด่นในการย้ายการบัญชี Slab จากระดับเพจหน่วยความจำไปยังระดับอ็อบเจ็กต์เคอร์เนล ซึ่งทำให้สามารถแชร์เพจ Slab ในกลุ่ม cgroup ที่แตกต่างกัน แทนที่จะจัดสรรแคช Slab แยกกันสำหรับแต่ละ Cgroup

แนวทางที่นำเสนอทำให้สามารถเพิ่มประสิทธิภาพในการใช้ Slab ได้ ลดขนาดหน่วยความจำที่ใช้สำหรับ Slab ลง 30-45% และลดการใช้หน่วยความจำโดยรวมของเคอร์เนลได้อย่างมาก การลดจำนวนแผ่นพื้นที่ไม่สามารถเคลื่อนย้ายได้ก็มีผลเชิงบวกในการลดการกระจายตัวของหน่วยความจำด้วย ตัวควบคุมหน่วยความจำใหม่ช่วยลดความซับซ้อนของโค้ดสำหรับการบัญชีสำหรับแผ่นคอนกรีตลงอย่างมาก และไม่จำเป็นต้องใช้อัลกอริธึมที่ซับซ้อนสำหรับการสร้างและลบแคชแผ่นคอนกรีตสำหรับแต่ละกลุ่ม cgroup cgroups หน่วยความจำทั้งหมดในการใช้งานใหม่ใช้ชุดแคช Slab ทั่วไป และอายุการใช้งานของ Slab Cache จะไม่เชื่อมโยงกับอายุการใช้งานของแคชที่ติดตั้งผ่าน cgroup อีกต่อไป ข้อ จำกัด เกี่ยวกับการใช้หน่วยความจำ

การบัญชีทรัพยากรที่แม่นยำยิ่งขึ้นที่นำมาใช้ในตัวควบคุมแผ่นพื้นใหม่ควรโหลด CPU ในทางทฤษฎีมากขึ้น แต่ในทางปฏิบัติความแตกต่างกลับกลายเป็นว่าไม่มีนัยสำคัญ โดยเฉพาะอย่างยิ่ง ตัวควบคุมสแลบใหม่ถูกใช้เป็นเวลาหลายเดือนบนเซิร์ฟเวอร์ Facebook ที่ใช้งานจริงซึ่งจัดการปริมาณงานประเภทต่างๆ และยังไม่มีการระบุการถดถอยที่เห็นได้ชัดเจน ในเวลาเดียวกันการใช้หน่วยความจำลดลงอย่างมาก - ในบางโฮสต์สามารถบันทึกหน่วยความจำได้มากถึง 1GB แต่ตัวบ่งชี้นี้ขึ้นอยู่กับลักษณะของโหลดขนาด RAM ทั้งหมดจำนวน CPU และคุณสมบัติการทำงานกับหน่วยความจำ การทดสอบก่อนหน้า แสดงให้เห็น ลดการใช้หน่วยความจำลง 650-700 MB (42% ของหน่วยความจำแบบสแลบ) บนส่วนหน้าของเว็บ, 750-800 MB (35%) บนเซิร์ฟเวอร์ที่มีแคช DBMS และ 700 MB (36%) บนเซิร์ฟเวอร์ DNS

ที่มา: opennet.ru

เพิ่มความคิดเห็น