จะอธิบายข้อกำหนดด้านประสิทธิภาพของ VMware สำหรับแอปพลิเคชันของเราต่อผู้ดูแลระบบ VMware ได้อย่างไร


23

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

เราต้องการ:

  • บอกผู้ดูแลระบบ VMware ของลูกค้า: คุณสามารถเรียกใช้แอปพลิเคชันของเราเช่นสภาพแวดล้อม VMware ESX ของคุณตราบใดที่ตรงตามเกณฑ์ประสิทธิภาพ X, Y และ Z
  • สามารถตรวจสอบได้ว่าเกณฑ์ X, Y และ Z เป็นจริงตามมาอย่างต่อเนื่อง (เช่นตอนนี้ ) แม้ในระบบที่กำลังรันอยู่ (เราไม่สามารถหยุดแอปพลิเคชันของเราและรันเกณฑ์มาตรฐานและมาตรฐานเริ่มต้นจะไม่เพียงพอ สภาพแวดล้อมเสมือนเปลี่ยนแปลงตลอดเวลา)
  • มีความมั่นใจว่าหากตรงตามเกณฑ์ X, Y และ Z เราจะมีทรัพยากร HW เสมือนเพียงพอที่จะเรียกใช้แอปพลิเคชันของเราด้วยประสิทธิภาพที่น่าพอใจ

ตอนนี้ X, Y และ Z คืออะไร?

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

ในทางทฤษฎีอาจเป็นไปได้ว่าบางครั้งใบสมัครของเราช้า ... ;-)

วิธีการหนึ่งระบุสาเหตุของปัญหาประสิทธิภาพการทำงานของเรา: สภาพแวดล้อมเสมือนหรือใบสมัครของเรา?

โดยทั่วไปจะมี 3 พื้นที่สำหรับปัญหาเกี่ยวกับประสิทธิภาพของ CPU, หน่วยความจำและ DISK I / O

ซีพียู

ในเช่น VMware ผู้ดูแลระบบสามารถระบุการจองและการ จำกัด ซึ่งแสดงเป็น MHz แต่เป็นเช่น 512MHz บนโฮสต์ ESX หนึ่งโฮสต์ตรงกับ 512MHz บนโฮสต์ ESX อื่นอาจเป็นคลัสเตอร์ ESX ที่แตกต่างกันโดยสิ้นเชิง

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

หน่วยความจำ (Ballooning?)

หากเราถามเช่น RAM 16GB ซึ่งมีการกำหนดค่าบ่อยครั้ง แต่เนื่องจากการส่งบอลลูนเราจะได้รับ 4GB เท่านั้นและแปลกใจแอปพลิเคชันของเราทำงานได้ไม่ดี

หนึ่งสามารถถามเครื่องมือ VMware เกี่ยวกับการบอลลูนในปัจจุบัน แต่เราพบว่ามันมักจะอยู่ (หรือไม่ถูกต้องอย่างน้อย) เราได้เห็นตัวอย่างแล้วว่าระบบปฏิบัติการคิดว่ามี RAM ทั้งหมด 16GB, ผลรวมของหน่วยความจำภายใน (RSS) ของกระบวนการทั้งหมดคือ 4GB RAM, แต่มี 2GB RAM ว่างเท่านั้น, แม้ว่าเครื่องมือของ VMware จะบอกเราว่ามีบอลลูน 0: - (

นอกจากนี้การเพิ่ม RSS ด้วยกันไม่ถูกต้องเนื่องจากอาจมี RAM ที่แชร์ได้ง่ายเช่นหน่วยความจำแบบคัดลอกเมื่อเขียนดังนั้น 512MB + 512MB จึงไม่จำเป็นต้องหมายถึง 1GB แต่อาจหมายถึงบางสิ่งที่น้อยลง ดังนั้นเราจึงไม่สามารถลบ RSS จากกระบวนการทั้งหมดเพื่อวัดขนาด RAM ที่ควรว่างและตรวจจับบอลลูนได้อย่างน่าเชื่อถือ เราสามารถตรวจจับบอลลูนบางกรณี แต่มีอีกหลายกรณีที่บอลลูนมีผล แต่ไม่สามารถตรวจจับได้ด้วยวิธีนี้

ดิสก์ I / O

ฉันเดาว่าเราสามารถสร้างกราฟในช่วงเวลาที่จำนวนดิสก์อ่านและเขียนจำนวนไบต์ที่อ่านและเขียนและ IO รอ% แต่นั่นจะให้ภาพที่ถูกต้องของดิสก์ I / O หรือไม่ ฉันคิดว่าถ้ามีคนขุดแร่ bitcoin ที่ทำงานอยู่ใน VM อื่นโดยใช้ CPU ทั้งหมด IO รอ% ของเราจะเพิ่มขึ้นแม้ว่า SAN พื้นฐานจะให้ประสิทธิภาพที่เหมือนกันเพียงเพราะทรัพยากร CPU ของเราลดลงและ IO ก็รอ ( ซึ่งวัดเป็น% ) เพิ่มขึ้น

ดังนั้นโดยสรุปเราสามารถใช้ภาษาใดในการอธิบายเช่นผู้ดูแลระบบ VMware ประสิทธิภาพที่เราต้องการในแบบพกพาและสามารถวัดได้


ข้อกำหนดที่แท้จริงของใบสมัครของคุณคืออะไร? สิ่งที่คุณอธิบายมานั้นยังไม่เพียงพอสำหรับฉันที่จะวัดความต้องการทรัพยากรในสภาพแวดล้อมของฉันอย่างถูกต้องและฉันมีความเชี่ยวชาญใน VMware กลุ่มเป้าหมายของคุณจะมีช่วงเวลาที่ยากลำบากยิ่งขึ้น ในทางปฏิบัติฉันท้ายไม่สนใจข้อกำหนดของผู้ขายและการวัด / การปรับขนาด VMs ขวาตามตัวชี้วัดทางประวัติศาสตร์และการสังเกตโดยใช้ vRealize Operations Manager
ewwhite

1
@ ขาวขาว: ฉันไม่ได้เป็นผู้เชี่ยวชาญด้านฮาร์ดแวร์โดยวิธีการใด ๆ แต่ให้ฉันเจาะจงและบอกว่ามันทำงานได้ดีบนCore i7-5820Kพร้อม RAM 8GB ดิสก์แม่เหล็ก ปี 2015 ใช้งานได้ดี SSD ดีกว่า (ฉันสามารถเจาะจงได้มากขึ้นถ้าต้องการ) เราต้องการพื้นที่ว่างบนดิสก์ 80GB
Peter V. Mørch

2
ในฐานะผู้ดูแลระบบฉันจะพูดว่า "ฉันต้องจัดสรรจำนวนแกนประมวลผลอะไรคือข้อกำหนดของ RAM จริงอะไรคือข้อกำหนดหน่วยเก็บข้อมูลจาก IOPs และมุมมองปริมาณงานอัตราการเติบโตของพื้นที่จัดเก็บคืออะไร ด้วย thin-provisioning ฯลฯ "
ewwhite

แอปพลิเคชันของคุณต้องการอะไรจากมุมมองด้านประสิทธิภาพ คุณมีเกณฑ์มาตรฐานสำหรับใบสมัครของคุณหรือไม่? การบอกว่า"It runs fine with x, y, and z"ไม่แม่นยำพอ คุณต้องสามารถบอกลูกค้าของคุณได้อย่างแม่นยำถึงสิ่งที่แอปพลิเคชันของคุณต้องการ ถ้าพวกเขาให้คุณทรัพยากรเหล่านั้นและดำเนินการสมัครไม่ดีแล้วคำถามไม่ได้"What do we need from a resource perspective?"แต่"Why is it performing poorly even though the proper resources have been allocated?"
joeqwerty

1
@ewwhite: "แก้ไข" หรือไม่ ไม่ฉันยังไม่มีการเข้ารหัส 25 คำที่ฉันสามารถมอบให้กับผู้ดูแลระบบ VMware จากนั้นสามารถทดสอบและรู้ว่าเราจะได้รับประสิทธิภาพที่คาดการณ์ได้เพราะอย่างที่คุณรู้ "มันขึ้นอยู่กับ" แต่ฉันยอมรับคำตอบของคุณแล้วเพราะตอนนี้ฉันคิดว่าเป็นไปไม่ได้ที่ข้อกำหนดที่แม่นยำและสามารถวัดผลได้และข้อมูลของคุณจะไปไกลในการพูดภาษาที่เหมาะสม ในอนาคตฉันจะแนะนำให้เราไป "ถ้าคุณต้องการให้เราแก้ไขปัญหาประสิทธิภาพการทำงานเราจะต้องดูการเข้าถึง vCenter ของคุณอย่างน้อย"
Peter V. Mørch

คำตอบ:


23
  • อย่างจริงจังผู้ดูแลระบบ VMware ส่วนใหญ่ไม่เก่งในเรื่องนี้:ความเข้าใจในการจัดการทรัพยากรไม่ดีมักไม่มีความรู้เกี่ยวกับ Linux (ช่วย) และไม่มีแบนด์วิดท์เวลา ฉันพบว่าผู้ดูแลระบบส่วนใหญ่มีช่วงเวลาที่ยากลำบากในการรักษาความรู้เกี่ยวกับระบบเสมือนจริงในระดับลึก

  • โชคดีที่มีหนังสือที่คุณสามารถอ่านได้ !

  • สภาพแวดล้อม VMware ส่วนใหญ่ไม่ค่อยดีนัก:การออกแบบคลัสเตอร์ที่ไม่ดี , การวางแผนทรัพยากรที่ไม่ดี , พื้นที่เก็บข้อมูลต่ำกว่ามาตรฐาน (เช่น Synology NAS), HA ที่กำหนดค่าไม่ถูกต้องไม่มีการตรวจสอบหรือการแพตช์

  • VMware ในฐานะองค์กรล้มเหลวเรา:พวกเขาไม่ดีโดยเฉพาะอย่างยิ่งในการเผยแพร่ข้อมูลที่ทันสมัยและส่งเสริมการปฏิบัติที่ดีที่สุด การค้นหาพื้นฐานสำหรับคำถามทั่วไปจะสร้างผลลัพธ์จากปี 2009 และการแก้ไข VMware รุ่นเก่ากว่าแม้ว่าข้อเท็จจริงที่ว่ากระบวนการและการออกแบบเปลี่ยนแปลงไปตามกาลเวลา

ทุกสิ่งเหล่านี้จะทำงานกับคุณ

คุณควรกำหนดความต้องการที่แท้จริงของโซลูชันของคุณ ความสามารถในการระบุอย่างถูกต้องว่าอุปกรณ์ของคุณต้องการ: 2 vCPU, 8GB RAM และประสิทธิภาพการจัดเก็บ 500 IOPsจะไปไกลสำหรับคนอย่างฉัน

วิธีอื่นคือสังเกตสภาพแวดล้อมที่ดีหรือเป็นอุดมคติและประเมินเมตริกจากที่นั่น

คุณอธิบายปัญหาเกี่ยวกับการปรับใช้บางอย่างแล้ว ปัญหาและปัญหาคอขวดคืออะไร


ตัวอย่างของ VM ขนาดที่เหมาะสม:

เซิร์ฟเวอร์ Exchange สำหรับองค์กร 300 ผู้ใช้

  • เรามีเวิร์กโหลด / ความเครียด heatmaps 6 สัปดาห์เมื่อเทียบกับเวลา
  • 6 vCPU ช่วยให้เราอยู่เหนือโซนความเครียดด้วยห้องบัฟเฟอร์สำหรับหนามแหลม
  • 32GB RAM ทำให้เราสูงกว่าค่าความกดดัน แต่ก็ไม่ใช่จำนวนที่ไม่สมเหตุสมผลเกินกว่าที่จำเป็นจริงๆ

ป้อนคำอธิบายรูปภาพที่นี่

  • ฉันสามารถเรียกคืน RAM ไม่กี่ GB และ vCPU แต่ทั้งหมดนี้เป็น VM ที่มีประสิทธิภาพ
  • คุณควรตรวจสอบใบสมัครประเภทนี้ของคุณภายใต้เงื่อนไขที่เหมาะสม

ป้อนคำอธิบายรูปภาพที่นี่


ตัวอย่างของการตรวจสอบทรัพยากร VM

Good-ish: - VM มีขนาดเหมาะสม - CPU ถูก overcommitted ข้ามคลัสเตอร์ แต่เราไม่ได้พบกับข้อขัดแย้ง

ป้อนคำอธิบายรูปภาพที่นี่

Bad-ish:

  • VM จะไม่ได้รับ RAM ทั้งหมดที่ถูกกำหนดค่าด้วย
  • VM กำลังแลกเปลี่ยน RAM อยู่แล้ว
  • CPU เป็นวิธีกำหนดค่ามากเกินไป

ป้อนคำอธิบายรูปภาพที่นี่


2
ขอบคุณ ewwhite สำหรับคำตอบของคุณ เพื่อประโยชน์ในการโต้แย้งสมมติว่าลูกค้าหนึ่งรายนั้นทำงานได้ดีกับ: 2 vCPU, 8GB RAM และประสิทธิภาพการเก็บข้อมูล 500 IOPs (จากคำตอบของคุณ) ที่เว็บไซต์ลูกค้าอื่นเราขอสิ่งเดียวกันและรับสิ่งนั้นตามผู้ดูแลระบบ VMware อย่างไรก็ตาม 2vCPU นั้นถูกแชร์กับ CPU หิว VM อื่น ๆ อีก 17 ตัวและ RAM 8GB ก็เพิ่มขึ้นเช่นกัน ฉันไม่เข้าใจดิสก์ VM ดีนักดังนั้นสมมติว่าเราเข้าใจแล้ว แอพของเราทำงานได้ดีเยี่ยมในสภาพแวดล้อม ESXi แรกและสองแห่งในสภาพแวดล้อมอื่น ๆ อย่างน่ากลัว ฉันจะวัดความแตกต่างจากภายใน VM ได้อย่างไร
Peter V. Mørch

1
คุณสามารถตรวจสอบ " CPU Steal " ด้านบนภายใน VM ของคุณเพื่อดูว่า CPU ได้รับการ overcommit มากเกินไปหรือไม่ สำหรับ RAM การบอลลูน / การแลกเปลี่ยนมันยากที่จะบอกจากภายใน VM ยกเว้นประสิทธิภาพที่ไม่ดี คุณสามารถขอดู vCenter และแหล่งข้อมูลสำหรับ VM ได้ ดูตัวอย่างด้านบน
ewwhite

1
ฉันจะดู CPU Steal บางครั้งเราก็จบลงด้วยการใช้นิ้วชี้ผู้ดูแลระบบของ VMware ที่แอปพลิเคชันของเราและเราชี้ไปที่สภาพแวดล้อมของ VMware ที่ช้า อย่างไรก็ตามเราส่วนใหญ่มักจะไม่ได้ดูการเข้าถึง vSphere แล้วมันก็ยากที่จะแก้ไขปัญหาเมื่อมันทำงานได้ดีในการติดตั้งอื่น ๆ ฉันคิดว่าวิธีการหนึ่งอาจเป็น: "หากคุณต้องการให้เราแก้ไขปัญหาประสิทธิภาพการทำงานเราจะต้องเข้าถึง vCenter ของคุณอย่างน้อย"
Peter V. Mørch

3
ผู้ดูแลระบบ VMware ส่วนใหญ่ไม่ทราบวิธีการอ่านสิ่งเหล่านี้ ฉันใช้เวลาทำความสะอาดหลังจากพวกเขา ดังนั้นในฐานะผู้ขายจึงยากที่จะขอการเข้าถึงหรือการตั้งค่าของพวกเขา แต่ฉันคิดว่ามันเป็นการดีที่สุดที่จะทำให้ความต้องการของคุณมั่นคง แม้ว่าปกติฉันจะไม่แนะนำให้ตั้งค่าการจองหากใบสมัครของคุณมีความสำคัญ หรืออย่างน้อยที่สุดให้ตั้ง "ลำดับความสำคัญการแชร์" แอปพลิเคชันทำอะไร
ewwhite

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