Thursday, April 26, 2012

Guest Memory VS Host Memory

อ้างอิงจาก โพสก่อนหน้านี้ นะครับ vSphere 5 Memory Management Fundamental
 หวังว่ายังคงจำ  Physical memory กับ Machine Memory กันได้นะครับ

คราวนี้เราจะนำความรู้จากโพสที่แล้วนั้น มาทำความเข้าใจกับ parameter ต่างๆบนหน้าต่างของ vSphere Client








       จากรูปทางฝั่งซ้ายจะเห็นได้เลยนะครับว่า เครื่อง VM นี้ เซ็ต memory ไว้ที่ประมาณ  7 GB (7168 MB) 

เริ่มจาก
       Memory Overhead = 87.68 MB    Memory Overhead  นั้นเป็นmemory ที่  ESXi ใช้ไปในการ virtualize VM เครื่องนี้  เนื่องจาก  kernel นั้นจำเป็นต้องสำรอง memory ส่วนหนึ่งไว้เพื่อใช้ในการจัดการ  memory ของ Guest นั้นๆ   (Machine memory )
      Consumed Host Memory = 1813 MB  เป็น memory จริง (Machine memory) ที่ Guest ใช้ไปในขณะนั้น
      Active Guest Memory     =  150 MB    เป็น memory จริง (Machine memory) ที่ ของ Guest นั้น ESXi เห็นว่า Active อยู่
   
     ดังนั้น สำหรับเครื่อง Windows  เครื่องนี้นั้น  configure  memory ไว้ที่  7GB (Maximum)  แต่ใช้ machine memory จริงๆ แค่ 1813 MB  โดย  machine memory ที่ active จริงๆนั้นมีแค่ 150 MB  
 
 Note: 1.ค่าเหล่านี้ เป็นค่าของ machine memory ทั้งสิ้น แต่ค่าที่เราเห็นจาก Task manager บน VM นั้นๆ เป็นค่าที่ Guest OS (Windows)  นั้นเห็น (Physical memory)    ดังนั้นทั้งสองค่าจะไม่เท่ากันนะครับ เนื่องจากเป็นค่าของ  memory ที่มาจากคนละ layer กัน
               2. ใน vSphere client นั้น จะใช้ host memory แทนคำว่า  machine memory นะครับ
มาดูรูปถัดไปกันนะครับ (คนละ  VM กับรูปแรกนะครับ )

       
         เครื่อง VM นี้เซ็ต memory ไว้  4 GB   โดยกิน host memory ไปแล้ว 1.83 GB และเสียค่า overhead ไป  59 MB  โดย  59 MB นี้จะรวมอยู่ใน  1.83 GB
         ต่อมา เราจะเห็นได้ว่า  Private Memory (Host Memoryของ Guest ที่ไม่ได้ถูก Shared )  คือ 1.77 GB  โดย  VM เครื่องนี้  share memory กับ VM เครื่องอื่นๆประมาณ 2.15 GB โดยยังไม่ได้ใช้ memory (เหลือ)อยู่ 84 MB (1.77 GB + 2.15 GB + 84MB = 4 GB)
Balloon , swap และ  compressed  มีค่าเป็นศูนย์สื่อว่า ระบบนั้นยังมี memory เพียงพอ  จึงไม่ต้องไปใช้  swap  ,ไม่ต้องใช้  balloon  และไม่ต้อง  compress memory  ดังนั้นจะเห็นได้ว่าที่กินไปทั้งหมด 1.83GB นั้น เป็นของตัวเอง 1.77GB + 59 MB ทีมาจาก overhead  นั่นเอง

 ผมหวังว่าคงจะเข้าใจ parameter  ต่างๆของ memory มากขึ้นแล้วนะครับ   ซึ่งจะช่วยในการแก้ปัญหาที่เกี่ยวกับ memory เป็นอย่างมากครับ