การจัดสรรหน่วยความจำในเซิร์ฟเวอร์ ESXi เป็นอย่างไร?


17

เรามีเซิร์ฟเวอร์ ESXi 4.1 พร้อม RAM 48 GB

สำหรับแต่ละ VM เรากำลังจัดสรรหน่วยความจำ 4GB เนื่องจากเซิร์ฟเวอร์จะมีเครื่องเสมือน 13 เครื่องผู้จัดการของฉันคิดว่าผิด

ฉันจะอธิบายให้พวกเขาฟังว่า ESXi จะจัดการหน่วยความจำเอง แต่พวกเขาถามฉันว่าฉันจัดสรรหน่วยความจำให้กับเซิร์ฟเวอร์ ESXi ได้เท่าใด

ฉันไม่ได้จัดสรรใด ๆ (ฉันไม่เคยได้ยินแม้แต่ตัวเลือกสำหรับการจัดสรรหน่วยความจำสำหรับเซิร์ฟเวอร์ ESXi เอง)

มีการจัดสรรหน่วยความจำสำหรับเซิร์ฟเวอร์ ESXi อย่างไร มันจัดสรรเกิน / กระจายแรมในเครื่องเสมือนโดยไม่มีปัญหาอย่างไร

คำตอบ:


26

มีมากกว่า ESXi ในคำถามที่นี่

  1. แต่ละ VM จะบริโภคได้ถึง 4GBs + "ค่าใช้จ่าย" ซึ่งเป็นเอกสารที่นี่ ขึ้นอยู่กับ vCPU + หน่วยความจำที่จัดสรร อย่างน้อยที่สุดแต่ละ VM จะใช้ 4261.98 MBs (4096 + 165.98)
  2. ค่าใช้จ่ายหน่วยความจำของ ESXi นี้ขึ้นอยู่กับฮาร์ดแวร์ ตัวเลือกที่ง่ายที่สุดคือดูที่การใช้หน่วยความจำระบบในไคลเอนต์ vSphere จากหน่วยความจำผมจำได้ว่ามันเป็นรอบเครื่องหมาย 1.3GB แต่ตามที่ระบุไว้ที่มีมากขึ้นอยู่กับฮาร์ดแวร์

อธิบายการจัดสรรหน่วยความจำ & การทับซ้อน

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

จำนวน VM + โฮสต์สูงสุดของคุณจะพยายามใช้จะมีประมาณ55 GB ระยะเวลาอาจแตกต่างกันไป

  • 1.3 GB ที่ใช้โดย ESXi
  • 4261.98 MBs * 13 ใช้โดย VMs

มีแง่มุมอื่นที่ต้องพิจารณาและนั่นคือเกณฑ์หน่วยความจำ โดยค่าเริ่มต้น VMware จะตั้งเป้าหมายว่าจะว่าง 6% (ขีด จำกัด หน่วยความจำสูง) ดังนั้นหน่วยความจำที่ใช้ขนาด 55 GBจะต้องลดลงเหลือ~ 45GB

นั่นหมายความว่าโฮสต์จะมีหน่วยความจำประมาณ 10,500 MBs ซึ่งจำเป็นต้องเรียกคืนจากที่ใดที่หนึ่งหาก VMs ใช้หน่วยความจำที่จัดสรรไว้ มีสามสิ่งที่ ESX ทำเพื่อค้นหา 10.5 GB เพิ่มเติมนั้น

วิธีการกู้คืนหน่วยความจำ

  1. การแชร์เพจแบบโปร่งใส
  2. หน่วยความจำบอลลูน
  3. Hypervisor Swapping

คุณควรอ่านและทำความเข้าใจการบริหารทรัพยากรหน่วยความจำความเข้าใจในVMware® ESX ™เซิร์ฟเวอร์

ขึ้นอยู่กับปัจจัยจำนวนมากการรวมกันของทั้งสามจะ / อาจเกิดขึ้นในโฮสต์ที่มุ่งมั่นมากกว่า คุณต้องทดสอบ envrionment ของคุณและติดตามการวัดเหล่านี้เพื่อทำความเข้าใจผลกระทบของการกระทำเกิน

กฎที่หยาบบางข้อที่ควรค่าแก่การรู้ (ทั้งหมดในเอกสารข้างต้นและแหล่งอื่น ๆ )

  1. การแชร์เพจแบบโปร่งใสจะไม่เกิดขึ้นสำหรับ VM ที่ใช้หน้าเว็บขนาด 2/4 MB ในขณะที่คุณจัดสรร 4096 MB ให้กับ Windows VM ของคุณพวกเขาจะใช้หน้า 2/4 MB เป็นค่าเริ่มต้น (ขึ้นอยู่กับ PAE) ภายใต้แรงกดดันของหน่วยความจำเท่านั้น VMware จะแบ่งเพจขนาดใหญ่ออกเป็นเพจขนาด 4 KB ที่สามารถแชร์ได้ TPS อาศัยการใช้รอบ CPU ที่ไม่ได้ใช้งานและการสแกนหน้าหน่วยความจำในอัตราที่แน่นอน ส่งคืนหน่วยความจำค่อนข้างช้า (คิดหนึ่งชั่วโมงมากกว่านาที) ดังนั้นพายุบูทจะหมายถึง TPS จะไม่ช่วยคุณ จากสามสิ่งนี้มีผลกระทบต่อประสิทธิภาพต่ำที่สุด เพิ่มเติมจากเอกสาร

ในการจำลองเสมือนหน่วยความจำที่ช่วยด้วยฮาร์ดแวร์ (ตัวอย่างเช่น Intel EPT Hardware Assist และระบบ AMD RVI Hardware Assist [6]) ESX จะสำรองหน้าทางกายภาพของผู้เยี่ยมชมโดยอัตโนมัติด้วยหน้าทางกายภาพโฮสต์ขนาดใหญ่ (พื้นที่หน่วยความจำต่อเนื่อง 2MB แทน 4KB ประสิทธิภาพที่ดีขึ้นเนื่องจากการพลาด TLB น้อยกว่า ในระบบดังกล่าว ESX จะไม่แชร์เพจขนาดใหญ่เหล่านั้นเนื่องจาก: 1) ความน่าจะเป็นในการค้นหาเพจขนาดใหญ่สองหน้าที่มีเนื้อหาเหมือนกันอยู่ในระดับต่ำและ 2) ค่าใช้จ่ายในการเปรียบเทียบแบบทีละบิตสำหรับเพจ 2MB นั้นมีขนาดใหญ่กว่ามาก สำหรับหน้า 4KB อย่างไรก็ตาม ESX ยังคงสร้างแฮชสำหรับหน้า 4KB ภายในแต่ละหน้าขนาดใหญ่ เนื่องจาก ESX ​​จะไม่สลับหน้าขนาดใหญ่ระหว่างการสลับโฮสต์ หน้าขนาดใหญ่จะถูกแบ่งออกเป็นหน้าเล็ก ๆ เพื่อให้แฮชที่สร้างไว้ล่วงหน้าเหล่านี้สามารถใช้เพื่อแบ่งปันหน้าเล็ก ๆ ก่อนที่จะถูกสับเปลี่ยน ในระยะสั้นเราอาจไม่พบการแชร์เพจใด ๆ สำหรับระบบการจำลองเสมือนหน่วยความจำที่ช่วยด้วยฮาร์ดแวร์จนกว่าหน่วยความจำโฮสต์จะถูก overcommitted

  1. การเตะบอลลูนในครั้งต่อไป (ขีด จำกัด สามารถกำหนดค่าได้โดยค่าเริ่มต้นนี่คือเมื่อโฮสต์มีหน่วยความจำว่างมากกว่า 6% (ระหว่างสูงและซอฟต์แวร์) ตรวจสอบให้แน่ใจว่าคุณติดตั้งไดรเวอร์และระวัง Java และแอปพลิเคชันที่ได้รับการจัดการโดยทั่วไป ระบบปฏิบัติการไม่มีข้อมูลเชิงลึกเกี่ยวกับสิ่งที่ตัวรวบรวมขยะจะทำต่อไปและจะจบลงด้วยการกดปุ่มเพจที่เปลี่ยนเป็นดิสก์ ไม่ใช่เรื่องแปลกสำหรับเซิร์ฟเวอร์ที่รันแอปพลิเคชันจาวาโดยเฉพาะเพื่อปิดใช้งานการสลับอย่างสิ้นเชิงเพื่อรับประกันว่าจะไม่เกิดขึ้น ดูหน้า 17 ของการจัดการหน่วยความจำ vSphere, SPECjbb

  2. การสลับไฮเปอร์ไวเซอร์จากสามวิธีเป็นวิธีเดียวที่รับประกัน "หน่วยความจำ" ที่มีให้กับไฮเปอร์ไวเซอร์ในเวลาที่กำหนด สิ่งนี้จะถูกใช้ถ้า 1 & 2 ไม่ให้หน่วยความจำเพียงพอที่จะอยู่ภายใต้ขีด จำกัดฮาร์ด (ค่าเริ่มต้นของหน่วยความจำว่าง 2%) เมื่อคุณอ่านตัวชี้วัดประสิทธิภาพ (ทำเอง) คุณจะรู้ว่านี่เป็นการทำงานที่แย่ที่สุดของทั้งสาม ตั้งเป้าหมายที่จะหลีกเลี่ยงค่าใช้จ่ายทั้งหมดเนื่องจากผลกระทบด้านประสิทธิภาพจะเป็นสิ่งที่น่าสังเกตมากในเกือบทุกแอปพลิเคชันเปอร์เซ็นต์สองหลัก

  3. มีอีกหนึ่งสถานะที่ต้องระวังในระดับต่ำ (โดยค่าเริ่มต้น 1%) จากคู่มือนี้สามารถลดประสิทธิภาพของคุณลงอย่างมาก

ในกรณีที่ไม่ค่อยเกิดขึ้นซึ่งหน่วยความจำว่างของโฮสต์ลดลงต่ำกว่าขีด จำกัด ต่ำ hypervisor ยังคงเรียกคืนหน่วยความจำผ่านการสลับการบีบอัดและหน่วยความจำและบล็อกการดำเนินการของเครื่องเสมือนทั้งหมดที่ใช้หน่วยความจำมากกว่าการจัดสรรหน่วยความจำเป้าหมาย

สรุป

ประเด็นสำคัญที่ทำให้เกิดความเครียดคือมันเป็นไปไม่ได้ที่จะทำนายจากเอกสารทางการเงินว่าสภาพแวดล้อมของคุณจะเป็นอย่างไร

  1. TPS ให้คุณได้เท่าไหร่ (ขึ้นอยู่กับว่า VM ของคุณมีความคล้ายคลึงกับ OS, Service Pack และแอปพลิเคชันที่รันอยู่)
  2. VM ของคุณจัดสรรหน่วยความจำของคุณอย่างรวดเร็วแค่ไหน? ยิ่งทำเร็วเท่าไหร่คุณก็ยิ่งมีโอกาสมากขึ้นที่จะข้ามไปยังขีด จำกัด ถัดไปก่อนที่รูปแบบการเรียกคืนหน่วยความจำที่มีผลกระทบน้อยจะประสบความสำเร็จในการทำให้คุณอยู่ในเกณฑ์ปัจจุบันของคุณ
  3. แต่ละรูปแบบการเรียกคืนหน่วยความจำจะมีผลกระทบกันอย่างกว้างขวาง

ทดสอบภาพจำลองโดยเฉลี่ยของคุณคุณเป็น 95% ของสถานการณ์แบบไทล์และในที่สุดคุณก็จะเข้าใจว่าสภาพแวดล้อมของคุณจะทำงานอย่างไร


แก้ไข 1

น่าจะเพิ่มด้วย vSphere 4 (หรือ 4.1 ไม่สามารถเรียกคืนได้) ตอนนี้คุณสามารถวาง hypervisor swap บนโลคัลดิสก์ แต่ยังคงvmotion VM หากคุณกำลังใช้ที่เก็บข้อมูลร่วมกันฉันขอแนะนำให้คุณย้ายไฟล์ไฮเปอร์ไวเซอร์ swap ไปไว้บนดิสก์ภายในเครื่องตามค่าเริ่มต้น สิ่งนี้ทำให้มั่นใจได้ว่าเมื่อโฮสต์หนึ่งอยู่ภายใต้แรงกดดันหน่วยความจำอย่างรุนแรงจะไม่ส่งผลกระทบต่อ vSphere โฮสต์ / VM อื่น ๆ ทั้งหมดบนที่เก็บข้อมูลเดียวกัน

แก้ไข 2

จากความคิดเห็นทำให้ ESX ไม่จัดสรรหน่วยความจำล่วงหน้าอย่างชัดเจน ...

แก้ไข 3

อธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับเกณฑ์หน่วยความจำ


1
VMware ไม่ได้กำหนดหน่วยความจำที่ไม่ได้ใช้ เหตุผลที่แท้จริงว่าทำไมการทำงาน overcommitting เป็นเพราะ VM จะได้รับการจัดสรรจำนวนหน่วยความจำสูงสุดเมื่อมีการร้องขอเท่านั้น เมื่อจัดสรรทุกอย่างแล้วการร้องขอหน่วยความจำเพิ่มเติมมาจากการสลับ
adaptr

1
คุณเห็นบิตนี้ก่อนเพิ่มความคิดเห็นนั้นหรือไม่ "โปรดทราบว่าไฮเปอร์ไวเซอร์จะไม่จัดสรรหน่วยความจำล่วงหน้าทั้งหมดนั้นขึ้นอยู่กับการใช้งานของ VM อย่างไรก็ตามมันคุ้มค่าที่จะเข้าใจว่าจะเกิดอะไรขึ้นหาก VMs พยายามจัดสรรและใช้หน่วยความจำทั้งหมดที่จัดสรรให้พวกเขา"
M Afifi

ตั้งแต่นั้นค่อนข้างเห็นได้ชัดหนึ่งในข้อกังวลหลักของ OPs (vmware ทำให้เกิดหน่วยความจำที่ฉันไม่ได้มีได้อย่างไร) มันควรจะปรากฏในรายการสูงไม่ใช่ในภายหลัง คุณกำลังอธิบายการใช้หน่วยความจำย้อนกลับโดยอธิบายการเรียกคืน ทำไม
adaptr

เป็นไปได้อย่างไร ตอบว่านี่คือจำนวนหน่วยความจำที่คุณจัดสรร มันจะไม่จัดสรรล่วงหน้า ถ้าเป็นเช่นนั้น (ขึ้นอยู่กับการใช้งานหน่วยความจำ VM) นั่นคือผลกระทบ ไม่สามารถบอกใครบางคนไม่ต้องกังวลกับมัน หากคุณ overcommit หน่วยความจำคุณควรทราบผลกระทบ
M Afifi

4

VMware (และเทคโนโลยีการจำลองเสมือนอื่น ๆ ) แบ่งปันทรัพยากร (หน่วยความจำเวลาโปรเซสเซอร์ I / O ชนิดต่าง ๆ ) ระหว่าง VMs ตามอัลกอริทึมต่างๆ

มีความเป็นไปได้ที่จะใช้ทรัพยากรมากเกินไปเพราะไม่ใช่ว่า VMs ทั้งหมดจะใช้การประมวลผล, หน่วยความจำหรือ I / O ทั้งหมดที่พวกเขาต้องการตลอดเวลา คู่มือการจัดการทรัพยากรของ VMwareน่าจะเป็นที่ที่ดีที่สุดในการอ่านสิ่งที่เป็นไปได้ใน ESXi

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

โปรดทราบว่า overcommitment ไม่ใช่ความคิดที่ดีเสมอไปโดยเฉพาะอย่างยิ่งถ้าคุณทำเวอร์ชวลไลซ์บนเซิร์ฟเวอร์เครื่องเดียว คุณควรตรวจสอบการใช้ทรัพยากรในทรัพย์ ESXi ของคุณและหากจำเป็นให้เพิ่มโฮสต์ / ทรัพยากรเพิ่มเติมหากคุณใช้ทรัพยากรทั้งหมดอย่างน้อยหนึ่งทรัพยากรเป็นประจำ


2

ปล่อยให้การติดตั้ง VMWare ESXi ของคุณจัดการได้ คุณสามารถ overcommit ทรัพยากร RAM บนระบบ VMWare เนื่องจากการใช้งานของบอลลูนหน่วยความจำ, การบีบอัดและเทคนิคการขจัดข้อมูลซ้ำซ้อน

หากเครื่องเสมือนกำลังใช้ระบบปฏิบัติการที่คล้ายกันก็จะประหยัดได้บ้าง ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานเครื่องมือ VMWare ภายใน guest VM เพื่อใช้ประโยชน์จากคุณสมบัติเหล่านี้อย่างเต็มที่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.