Facebook เปิดตัวกลไก TMO ซึ่งช่วยให้คุณประหยัดหน่วยความจำบนเซิร์ฟเวอร์ได้ 20-32%

วิศวกรจาก Facebook (ถูกแบนในสหพันธรัฐรัสเซีย) เผยแพร่รายงานเกี่ยวกับการแนะนำเทคโนโลยี TMO (Transparent Memory Offloading) เมื่อปีที่แล้ว ซึ่งช่วยให้คุณประหยัด RAM บนเซิร์ฟเวอร์ได้อย่างมากโดยการแทนที่ข้อมูลรองที่ไม่จำเป็นในการทำงานกับไดรฟ์ที่มีราคาถูกกว่า เช่น NVMe SSD -ดิสก์ Facebook ประมาณว่าการใช้ TMO จะช่วยประหยัด RAM ได้ระหว่าง 20% ถึง 32% ในแต่ละเซิร์ฟเวอร์ โซลูชันนี้ออกแบบมาเพื่อใช้ในโครงสร้างพื้นฐานที่แอปพลิเคชันทำงานในคอนเทนเนอร์แบบแยกส่วน ส่วนประกอบด้านเคอร์เนลของ TMO รวมอยู่ในเคอร์เนล Linux แล้ว

ที่ฝั่งเคอร์เนลของ Linux การทำงานของเทคโนโลยีนี้มาจากระบบย่อย PSI (Pressure Stall Information) ซึ่งให้มาตั้งแต่รีลีส 4.20 PSI ถูกใช้ในตัวจัดการหน่วยความจำภายนอกต่างๆ แล้ว และช่วยให้คุณสามารถวิเคราะห์ข้อมูลเกี่ยวกับเวลารอเพื่อรับทรัพยากรต่างๆ (CPU, หน่วยความจำ, I / O) ด้วย PSI ตัวประมวลผลพื้นที่ผู้ใช้สามารถประเมินโหลดของระบบและรูปแบบการชะลอตัวได้แม่นยำยิ่งขึ้น ทำให้สามารถตรวจจับความผิดปกติได้ตั้งแต่เนิ่นๆ ก่อนที่จะส่งผลกระทบต่อประสิทธิภาพที่เห็นได้ชัดเจน

ในพื้นที่ผู้ใช้ TMO จะทำงานโดยคอมโพเนนต์ Senpai ซึ่งจะปรับขีดจำกัดของหน่วยความจำแบบไดนามิกสำหรับคอนเทนเนอร์แอปพลิเคชันผ่าน cgroup2 ตามข้อมูลที่ได้รับจาก PSI Senpai วิเคราะห์สัญญาณของจุดเริ่มต้นของการขาดแคลนทรัพยากรผ่าน PSI ประเมินความไวของแอปพลิเคชันเพื่อทำให้การเข้าถึงหน่วยความจำช้าลง และพยายามกำหนดขนาดขั้นต่ำของหน่วยความจำที่จำเป็นสำหรับคอนเทนเนอร์ ซึ่งข้อมูลที่จำเป็นสำหรับงานยังคงอยู่ใน RAM และที่เกี่ยวข้อง ข้อมูลที่ตกลงในแคชของไฟล์หรือไม่ได้ใช้โดยตรงในปัจจุบัน จะถูกบังคับให้ออกจากพาร์ติชัน swap

Facebook เปิดตัวกลไก TMO ซึ่งช่วยให้คุณประหยัดหน่วยความจำบนเซิร์ฟเวอร์ได้ 20-32%

ดังนั้น สาระสำคัญของ TMO คือการรักษากระบวนการให้เข้มงวดในแง่ของการใช้หน่วยความจำ บังคับให้เพจหน่วยความจำที่ไม่ได้ใช้ถูกย้ายไปยังพาร์ติชั่น swap ซึ่งการลบออกจะไม่ส่งผลกระทบต่อประสิทธิภาพอย่างเห็นได้ชัด (ตัวอย่างเช่น เพจที่ใช้โค้ดเท่านั้น ระหว่างการเริ่มต้นและข้อมูลแบบใช้ครั้งเดียวในดิสก์แคช) ตรงกันข้ามกับการขับไล่ข้อมูลไปยังพาร์ติชัน swap เพื่อตอบสนองต่อหน่วยความจำเหลือน้อย TMO ขับไล่ข้อมูลตามการคาดการณ์ล่วงหน้า

การไม่มีการเข้าถึงหน้าหน่วยความจำภายใน 5 นาทีใช้เป็นหนึ่งในเกณฑ์สำหรับใบจอง หน้าดังกล่าวเรียกว่าเย็น (หน้าหน่วยความจำเย็น) และโดยเฉลี่ยคิดเป็นประมาณ 35% ของหน่วยความจำแอปพลิเคชัน (ขึ้นอยู่กับประเภทของแอปพลิเคชันจะมีการเปลี่ยนแปลงจาก 19% ถึง 65%) ใบจองคำนึงถึงกิจกรรมที่เกี่ยวข้องกับเพจที่ไม่ระบุตัวตนของหน่วยความจำ (หน่วยความจำที่จัดสรรโดยแอปพลิเคชัน) และหน่วยความจำที่ใช้สำหรับการแคชไฟล์ (จัดสรรโดยเคอร์เนล) ในบางแอปพลิเคชัน หน่วยความจำที่ไม่ระบุชื่อคือการใช้งานหลัก แต่ในบางแอปพลิเคชั่น แคชของไฟล์ก็มีความสำคัญเช่นกัน เพื่อหลีกเลี่ยงความไม่สมดุลเมื่อล้างหน่วยความจำไปยังแคช TMO ใช้อัลกอริทึมการเพจใหม่ที่ล้างเพจที่ไม่ระบุตัวตนและเพจที่เกี่ยวข้องกับแคชไฟล์ตามสัดส่วน

การพุชหน้าที่ใช้ไม่บ่อยไปยังหน่วยความจำที่ช้าลงไม่ส่งผลกระทบอย่างมากต่อประสิทธิภาพ แต่สามารถลดค่าใช้จ่ายด้านฮาร์ดแวร์ได้อย่างมาก ข้อมูลจะถูกส่งออกไปยัง SSD หรือพื้นที่สว็อปที่บีบอัดใน RAM ด้วยค่าใช้จ่ายในการจัดเก็บข้อมูลหนึ่งไบต์ การใช้ NVMe SSD จึงถูกกว่าการใช้การบีบอัดข้อมูลใน RAM ถึง 10 เท่า

Facebook เปิดตัวกลไก TMO ซึ่งช่วยให้คุณประหยัดหน่วยความจำบนเซิร์ฟเวอร์ได้ 20-32%


ที่มา: opennet.ru

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