Memory Ballooning ใน Linux / Unix บน VMware ESXi
ฉันต้องการความช่วยเหลือในการเรียกคืนหน่วยความจำแบบบอลลูนในเครื่อง Linux / Unix กรุณาช่วยฉันออกไป. ฉันพบวิธีแก้ปัญหาบางอย่าง แต่ไม่สามารถทำได้สำหรับฉันบนเซิร์ฟเวอร์ที่ใช้งานจริง
ฉันแค่ต้องรู้ว่าฉันจะเรียกคืนหน่วยความจำแบบบอลลูนได้อย่างไรโดยไม่ต้องรีบูตหรือย้ายเครื่องไปยังโฮสต์อื่น
คำตอบ
การขึ้นบอลลูนจะเกิดขึ้นภายใต้เงื่อนไขที่เฉพาะเจาะจงบางประการเท่านั้น เพื่อให้ VMware ESXi "ขยาย" ไดร์เวอร์บอลลูนใน VM โฮสต์จะต้องอยู่ภายใต้การขัดแย้งของหน่วยความจำที่หนักมากโดยทั่วไปน้อยกว่า 4% ของหน่วยความจำที่ว่างบนโฮสต์
แนวคิดเกี่ยวกับโปรแกรมควบคุมบอลลูนมีไว้สำหรับ VMTools เพื่อเริ่มใช้หน่วยความจำภายใน VM ซึ่งระบบปฏิบัติการของ VM จะตอบสนองโดยการให้หน้าหน่วยความจำไดร์เวอร์บอลลูน โปรแกรมควบคุมบอลลูนไม่ต้องการหน้าเหล่านี้สำหรับสิ่งใด แต่จะบอกไฮเปอร์ไวเซอร์ว่าหน้าหน่วยความจำใดที่ VM ไม่ได้ใช้เพื่ออะไรดังนั้นไฮเปอร์ไวเซอร์จึงสามารถทิ้งได้อย่างปลอดภัย หากวิธีนี้ไม่สามารถแก้ปัญหาความขัดแย้งของหน่วยความจำบนโฮสต์ได้ไฮเปอร์ไวเซอร์จะขยายไดร์เวอร์บอลลูนต่อไปโดยมากถึง 65% ของหน่วยความจำเสมือนที่กำหนดตามค่าเริ่มต้นซึ่งทำให้ระบบปฏิบัติการบน VM เริ่มการสลับไปยังดิสก์ นี่ไม่ใช่ผลลัพธ์ที่ยอดเยี่ยม แต่ดีกว่าการที่ไฮเปอร์ไวเซอร์สลับไปยังดิสก์แทนเนื่องจากระบบปฏิบัติการบน VM รู้ว่าหน้าใดเหมาะสมที่จะเปลี่ยนเป็นดิสก์
วิธี จำกัด การทำบอลลูนคือปิดต่อ VM (ไม่ใช่กลยุทธ์ที่ยอดเยี่ยม) หรือเพื่อสำรองหน่วยความจำสำหรับ VM หาก VM ระบุว่า RAM 4 GB และการสำรองหน่วยความจำ 3 GB ไดรเวอร์บอลลูนจะขยายได้ถึง 1 GB เท่านั้น
เนื่องจากการทำบอลลูนเป็นกลยุทธ์สุดท้ายสำหรับ ESXi จึงมักหมายความว่าคุณมีหน่วยความจำน้อยเกินไปที่ติดตั้งบนโฮสต์ของคุณ
คุณสามารถตั้งค่าsched.mem.maxmemctlพารามิเตอร์สำหรับ VM เพื่อระบุจำนวนหน่วยความจำสูงสุด (เป็นเมกะไบต์) ที่สามารถเรียกคืนจากแขกได้ผ่านการทำบอลลูนหน่วยความจำ นอกจากนี้ยังสามารถตั้งค่าเป็น 0 เพื่อปิดใช้งานบอลลูนทั้งหมดสำหรับแขก
โปรดทราบว่าหากมีการขึ้นบอลลูนโฮสต์ของคุณมักต้องการหน่วยความจำกายภาพเพิ่มเติมเพื่อติดตั้ง Ballooning ช่วยให้ ESXi รับหน่วยความจำที่ "ไม่ได้ใช้" จากแขกและใช้กับแขกคนอื่น ๆ แต่ระบบปฏิบัติการสมัยใหม่ไม่มีหน่วยความจำที่ "ไม่ได้ใช้" อีกต่อไปแล้วเนื่องจากสิ่งที่พวกเขาทำจะถูกนำไปใช้เช่นการแคชที่เก็บข้อมูล ดังนั้นประสิทธิภาพของแขกจะลดลงเมื่อนำหน่วยความจำนี้ไป