วิธีการจัดการหน่วยความจำใหม่ของ Facebook

หนึ่งในสมาชิกของทีมพัฒนาเครือข่ายโซเชียล Facebook, โรมัน กุชชินเสนอชุดของรายชื่อผู้รับจดหมายของนักพัฒนา แพตช์เคอร์เนล Linuxมุ่งเป้าไปที่การปรับปรุงการจัดการหน่วยความจำผ่านการใช้งานตัวควบคุมการจัดการหน่วยความจำใหม่ - แผ่นพื้น (ตัวควบคุมหน่วยความจำแผ่นพื้น).

การกระจายแผ่นพื้น เป็นกลไกการจัดการหน่วยความจำที่ออกแบบมาเพื่อจัดสรรหน่วยความจำอย่างมีประสิทธิภาพมากขึ้นและกำจัดการกระจายตัวที่มีนัยสำคัญ พื้นฐานของอัลกอริธึมนี้คือการบันทึกหน่วยความจำที่จัดสรรซึ่งมีออบเจ็กต์ประเภทใดประเภทหนึ่งและนำหน่วยความจำนั้นกลับมาใช้ใหม่ในครั้งต่อไปที่จัดสรรให้กับออบเจ็กต์ประเภทเดียวกัน เทคนิคนี้ถูกนำมาใช้ครั้งแรกใน SunOS โดย Jeff Bonwick และปัจจุบันใช้กันอย่างแพร่หลายในเคอร์เนลของระบบปฏิบัติการ Unix หลายระบบ รวมถึง FreeBSD และ Linux

ตัวควบคุมใหม่จะขึ้นอยู่กับการย้ายการบัญชีสแลบจากระดับเพจหน่วยความจำไปยังระดับอ็อบเจ็กต์เคอร์เนล ซึ่งทำให้สามารถแชร์เพจสแลบหนึ่งหน้าในกลุ่ม cgroup ที่แตกต่างกัน แทนที่จะจัดสรรแคชแยกกันสำหรับแต่ละกลุ่ม cgroup

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

คอนโทรลเลอร์ใหม่ได้รับการทดสอบบนเซิร์ฟเวอร์ Facebook ที่ใช้งานจริงเป็นเวลาหลายเดือนและจนถึงขณะนี้การทดสอบนี้สามารถเรียกได้ว่าประสบความสำเร็จ: โดยไม่สูญเสียประสิทธิภาพและไม่มีข้อผิดพลาดเพิ่มขึ้น ปริมาณการใช้หน่วยความจำลดลงอย่างชัดเจน - ในบางส่วน เซิร์ฟเวอร์สูงสุด 1GB ตัวเลขนี้ค่อนข้างเป็นอัตนัย เช่น การทดสอบก่อนหน้านี้แสดงผลลัพธ์ที่ต่ำกว่าเล็กน้อย:

  • 650-700 MB บนส่วนหน้าของเว็บ
  • 750-800 MB บนเซิร์ฟเวอร์พร้อมแคชฐานข้อมูล
  • 700 MB บนเซิร์ฟเวอร์ DNS

>>> หน้าผู้เขียนบน GitHub


>>> ผลการทดสอบเบื้องต้น

ที่มา: linux.org.ru

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