เป็น VM ที่มี 2 CPU เร็วกว่าจริง ๆ ด้วย 4 CPU หรือไม่


67

ไอทีของเราสร้าง VM พร้อม 2 CPU ที่จัดสรรแทนที่จะเป็น 4 ที่ฉันร้องขอ เหตุผลของพวกเขาคือ VM ทำงานได้ดีขึ้นด้วย 2 CPU มากกว่า 4 (ตามที่กล่าวไว้) เหตุผลคือ VM hypervisor (VMWare ในกรณีนี้) รอให้ซีพียูทั้งหมดพร้อมใช้งานก่อนที่จะเข้าร่วมใด ๆ ดังนั้นจึงใช้เวลานานในการรอ 4 มากกว่า 2 CPU

ข้อความนี้สมเหตุสมผลหรือไม่?

คำตอบ:


62

สิ่งนี้เคยเป็นจริง แต่ไม่ได้เป็นจริงอีกต่อไป

สิ่งที่พวกเขาหมายถึงเป็นที่เข้มงวดร่วมการจัดตารางเวลา

สิ่งสำคัญที่สุดของทั้งหมดในขณะที่อัลกอริทึมการจัดกำหนดการร่วมที่เข้มงวดการมี vCPU ที่มีการปกคลุมด้วยวัตถุฉนวนทำให้เครื่องเสมือนทั้งหมดหยุดทำงานร่วมกัน ในอัลกอริทึมการจัดกำหนดการร่วมที่ผ่อนคลาย vCPU ชั้นนำจะตัดสินใจว่าควรหยุดร่วมกันโดยขึ้นอยู่กับความเบ้กับ vCPU พี่น้องที่ช้าที่สุด

ตอนนี้ถ้าโฮสต์มี 4 เธรดเท่านั้นคุณก็จะโง่ที่จะจัดสรรเธรดทั้งหมด หากมีโปรเซสเซอร์สองตัวและ 4 เธรดต่อตัวประมวลผลคุณอาจไม่ต้องการจัดสรรเนื้อหาทั้งหมดของตัวประมวลผลเดียวเนื่องจากไฮเปอร์ไวเซอร์ของคุณควรพยายามเก็บ vCPUs ไว้ในโหนด NUMA เดียวกันเพื่อให้เข้าถึงหน่วยความจำได้เร็วขึ้นและคุณ ทำให้งานนี้ยากขึ้นโดยการจัดสรรซ็อกเก็ตทั้งหมดให้กับ VM เดียว (ดูหน้า 12 ของ PDF ข้างต้น)

ดังนั้นจึงมีสถานการณ์ที่ vCPUs น้อยลงสามารถทำงานได้ดีกว่ามาก แต่ก็ไม่เป็นความจริง 100% ของเวลา

ทุกสิ่งที่พูดและทำฉันแทบจะไม่ได้จัดสรร vCPU มากกว่า 3 ต่อผู้เข้าพัก ทุกคนจะได้รับ 2 โดยค่าเริ่มต้น 3 ถ้าเป็นภาระงานหนักและ 4 สำหรับสิ่งต่าง ๆ เช่น SQL Server หรือการประมวลผลชุดข้อมูลที่หนักมากหรือเซิร์ฟเวอร์เทอร์มินัลที่มีผู้ใช้จำนวนมาก


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

4
@ Luaan กล่องมี SQL Server อยู่ดังนั้นฉันคิดว่าพวกเขามีซอฟต์แวร์ที่ดี
AngryHacker

1
@AngryHacker ใช่เซิร์ฟเวอร์ SQL สามารถใช้ทั้ง 4 คอร์ได้อย่างมีประสิทธิภาพมากโดยสมมติว่าคุณมีMAXDOPการตั้งค่าที่เหมาะสม อย่างไรก็ตามขึ้นอยู่กับปริมาณงานเซิร์ฟเวอร์ SQL ที่เสียภาษีมากเกินไปมักจะเป็นสัญญาณของการออกแบบฐานข้อมูลที่ไม่ดี - ดัชนีที่ไม่ดี, ไม่มีดัชนีคลัสเตอร์, ดัชนีมากเกินไปไม่มีการปรับให้เหมาะสม ฯลฯ (ไม่เสมอไป แต่บ่อยครั้ง)
Mark Henderson

1
@ Luaan นั่นยังคงเป็นแบบคู่ขนาน ... เพียง แต่มีเวลาแฝงที่สูงขึ้นมากหากพวกเขาต้องการพูดคุยกัน :)
reirab

@ MarkHenderson มันมีประสิทธิภาพที่ดี แต่ปริมาณงานบางอย่างมีขนาดใหญ่เกินกว่าที่จะจัดการได้อย่างง่ายดายโดย 2 CPUs พร้อมกับข้อความค้นหาอื่น ๆ อีกมากมายในเวลาเดียวกัน
AngryHacker

15

สิ่งนี้ส่วนใหญ่ขึ้นอยู่กับไฮเปอร์ไวเซอร์พื้นฐานและผู้ดูแลระบบที่ใช้งานฉันขออธิบาย:

  1. มันเป็นการปฏิบัติที่ไม่ถูกต้องที่จะให้ 4 CPU เพียงอย่างเดียวเพราะคุณร้องขอ โดยทั่วไปคุณคิดว่าคุณต้องการ 4; แต่การตรวจสอบทรัพยากรบอกว่าคุณต้องการเพียง 1
  2. VMware ESXi เช่นต้องล็อค pCPUs ทุกเมื่อ vCPU ทำให้การร้องขอสำหรับทรัพยากรซีพียู ; ดังนั้นไฮเปอร์ไวเซอร์นี้จึงไม่ดีต่อประสิทธิภาพ KVM ไม่ล็อคเช่นเดียวกับ ESXi มันใช้กำหนดการเคอร์เนลพื้นฐาน แต่ยังคงอยู่ในระยะยาวสามารถสร้างการแข่งขันของ CPU
  3. หากคุณกำลังสร้างระบบตั้งแต่เริ่มต้นด้วย 4 ซีพียูคุณจะไม่ได้รับการปรับขนาดออกมาจริงๆ คุณอาจต้องการตรวจสอบว่าคุณกำลังก่อสร้างสิ่งใดที่มันกำลังทำงานอยู่เพื่อที่จะสามารถปรับขนาดให้เข้ากับโครงสร้างพื้นฐานคลาวด์ที่ทันสมัยในปัจจุบัน

คุณเรียนรู้อะไรจากเรื่องนี้? สร้าง VMs ด้วยทรัพยากรน้อยที่สุดและเพิ่มตามต้องการเสมอ ไต่ระดับเสมอแทนที่จะเป็นและคุณจะสามารถเรียกใช้แอปได้ทุกที่

เนื่องจากการล็อกที่สามารถพบกับ hypervisor นั้นเป็นความจริงที่ว่า 2 CPU สามารถเร็วกว่า 4 CPU


4

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

ฉันได้ลด vCPU ลงบน VMs ของเราจำนวนหนึ่งและได้เห็นการปรับปรุงเกี่ยวกับปริมาณงานส่วนใหญ่ กำมือแย่ลงและจำเป็นต้องชนกับการนับ vCPU

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