มีการตั้งค่าที่เหมาะสมที่สุดสำหรับจำนวนคอร์ CPU ที่สัมผัสกับ VM หรือไม่?


23

VirtualBox และซอฟต์แวร์ VM อื่น ๆ อาจอนุญาตให้ผู้ใช้ระบุจำนวนของ CPU ที่เปิดเผยต่อ VM โดยเฉพาะอย่างยิ่งในกรณีของฉันฉันมีซีพียูแบบดูอัลคอร์โดยที่ Windows 7 64- บิตทำงานได้ตามปกติและ Ubuntu 9.04 64 บิตเป็น VM

ไฟล์ช่วยเหลือแนะนำไม่ให้ตั้งค่านี้เกินจำนวนของแกนประมวลผลที่มีอยู่ มันสมเหตุสมผลแล้ว ดังนั้นจะเป็นการดีที่สุดที่จะจัดสรร CPU 1 หรือ 2 คอร์หรือไม่ สิ่งนี้ขึ้นอยู่กับภาระของ CPU แบบดั้งเดิมทั้งหมดหรือไม่

คำตอบ:


6

มันขึ้นอยู่กับสิ่งที่แขกของระบบปฏิบัติการกำลังทำอยู่ จากประสบการณ์ส่วนตัวของฉัน VM กำลังใช้งานโปรแกรมเดียว (build server, trac server, SVN, ฯลฯ ) ดังนั้นจึงไม่มีเหตุผลที่จะตั้งค่าไว้เหนือโปรแกรมหนึ่ง

กรณีที่เป็นไปได้อาจเป็นได้หากเป็นผู้ใช้ปลายทางที่พูดว่ามหาวิทยาลัยที่ใช้ระบบปฏิบัติการเกสต์เพื่อเป็นที่พักชั่วคราว


ดังนั้นในคำอื่น ๆ : สำหรับระบบชั่วคราวคุณอาจใช้โควต้าคอร์ของ CPU สูงสุด แต่สำหรับการใช้งาน "ปกติ" หรือโดยทั่วไปให้ตั้งค่าเป็นหนึ่งคอร์ (เพื่อไม่รบกวนการทำงานของโฮสต์ระบบปฏิบัติการมากเกินไป)?
sblair

18

ข้อมูลในคำตอบนี้จะไม่ถูกต้อง มันถูกต้องย้อนกลับไปในวันของการจัดตารางเวลาร่วมที่เข้มงวด แต่ไม่มีกรณีอีกต่อไป

ฉันคงคำตอบไว้ด้านล่างเพื่อเห็นแก่ความเจริญรุ่งเรือง แต่โปรดอย่าพึ่งมันจะแม่นยำสำหรับ hypervisors ที่ทันสมัย


คุณไม่ควรกำหนดแกนทั้งหมดของคุณเป็น vCPU ในเครื่องเสมือน

ถ้า VM ร้องขอใด ๆเวลา CPU, VMWare มีการจัดสรรทั้งทุก vCPUs หรือไม่มีของ vCPUs

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

สิ่งนี้จะทำลายประสิทธิภาพในสภาพแวดล้อมทั้งสองอย่างสมบูรณ์แบบ

รู้สึกอิสระที่จะจัดสรรแกนจำนวนคี่ (พูด, 3) มันให้ความรู้สึกแปลก ๆ แต่มันเป็นตัวเลือกที่ถูกกฎหมายอย่างสมบูรณ์

โดยทั่วไปฉันไม่เคยจัดสรรมากกว่า (n / 2) vCPUs (ในกรณีของคุณ 2) - แต่ฉันมักจะจัดสรรคอร์ในเซิร์ฟเวอร์ที่มีระหว่าง 12 และ 32 คอร์ที่คุณสามารถจัดสรร vCPU จำนวนมากโดยไม่มีผลกระทบสำคัญ


นี่เป็นคำตอบเดียวที่เขียนด้วยผู้มีอำนาจทุกระดับ ขอบคุณที่แบ่งปันประสบการณ์ของคุณ
G-Wiz

5
-1: ไม่สอดคล้องกับประสบการณ์ของฉัน VM เป็นกระบวนการที่เวลา CPU สามารถกำหนดเวลาในลักษณะเดียวกับกระบวนการอื่น ๆ บนโฮสต์ คุณสามารถปรับลำดับความสำคัญของกระบวนการ VM บนโฮสต์และระบบจะทำการโหลดให้สมดุลอย่างเหมาะสม
bwDraco

2
( ต่อ ) สมมติว่าคุณมีเซิร์ฟเวอร์ 16-core ตัวอย่างการกำหนดค่าจะเป็น 4 VMs แต่ละรายการกำหนดค่าสำหรับ 8 คอร์ แม้ว่าสิ่งนี้อาจดูเหมือนว่ามีแกนประมวลผลเสมือนมากเกินไป แต่ก็ยอมให้ VM แต่ละเครื่องสามารถปรับขนาดได้ดีขึ้นสำหรับปริมาณงานที่หนัก หากการใช้ประโยชน์แบบรวมเกินจำนวนแกนประมวลผลทางกายภาพโฮสต์จะสร้างความสมดุลให้กับโหลด นั่นคือวิธีที่การจำลองเสมือนสามารถเพิ่มปริมาณงานและลดค่าใช้จ่ายโดยการใช้ประโยชน์สูงสุดจากฮาร์ดแวร์โฮสต์
bwDraco

@DragonLord - คำตอบนี้มีอายุมากกว่า 2 ปีสำหรับคำถามที่เกือบ 4 ปีและอาจขึ้นอยู่กับข้อมูลที่ล้าสมัย ฉันกำลังอ้างถึง "การจัดกำหนดการอย่างเข้มงวด" จาก ESX ​​แต่ฉันจำไม่ได้ว่าข้อมูลมีอายุเท่าไรและฉันไม่ได้อัปเดตข้อมูลล่าสุดเกี่ยวกับการเปลี่ยนแปลงการกำหนดเวลา CPU ในช่วงไม่กี่ปีที่ผ่านมา
Mark Henderson

1
เพียงแค่ต้องการที่จะลดลงบันทึกที่นี่ว่าทั้ง Ubuntu 14.04 และ 16.04 มีปัญหาการบูตเช่นเดียวกับการล่มหากคุณตั้งค่าจำนวนของ CPU เป็นจำนวนคี่ ฉันไม่สามารถทราบสาเหตุได้เพราะฉันตัดสินใจเก็บไว้ที่เลขคู่เพื่อหลีกเลี่ยงปัญหา
Dorian

3

จำนวนคอร์ที่เปิดรับ CPU แขกจะไม่ส่งผลต่อประสิทธิภาพเท่าที่คุณต้องการ เพียงปรับจำนวนแกนของ CPU แขก "เห็น"

ขึ้นอยู่กับวิธีการตั้งค่าตัวจำลองมันสามารถครึ่งหนึ่งของประสิทธิภาพของเครื่องเสมือนจริงไม่ทำอะไรเลยหรือส่งผลกระทบต่อวิธีที่แขกระบบปฏิบัติการ / แอปพลิเคชันแยกการตั้งเวลาเธรดเท่านั้น

เป็นการดีที่สุดที่จะปล่อยให้เป็นค่าเริ่มต้น หากคุณพบปัญหาประสิทธิภาพการทำงานบนพีซีโฮสต์คุณสามารถปรับระดับความสำคัญของกระบวนการด้วย Windows Task Manager


3

ตามที่ Nate ได้กล่าวไว้ตราบใดที่ VM ของคุณส่วนใหญ่จะให้บริการเรียกใช้กระบวนการแบบเธรดเดียวมีเหตุผลเล็กน้อยที่จะจัดสรรมากกว่าหนึ่งคอร์

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

วิธีเดียวที่จะตรวจสอบให้แน่ใจก็คือใช้การวัดประสิทธิภาพ .. ฉันไม่รู้ว่าทำไม แต่ในระบบ Core2 Quad ของฉัน (ซึ่งมีการสนับสนุน VT-x, การเพจซ้อนกัน, .. ) จริง ๆ แล้วใช้ 1 ใน 4 คอร์ทำงานได้ดีขึ้น มากกว่าการใช้ 2 คอร์หรือมากกว่า! ฉันเห็นสิ่งนี้ในเวลาเริ่มต้นของ VM แต่ยังอยู่ในระหว่างการรวบรวมมาตรฐาน

ด้วยผลลัพธ์ฮาร์ดแวร์อื่น ๆ จะแตกต่างกัน ฉันยังมี i7 ที่มี 8 คอร์และประสิทธิภาพดูเหมือนว่าจะดีขึ้นมากด้วยจำนวนคอร์ที่นั่น (ใช้ 4 อย่างมีความสุข)

คำแนะนำของฉัน: เปรียบเทียบฮาร์ดแวร์ใหม่ก่อน


1

ฉันเชื่อว่าตัวกำหนดตารางเวลาของระบบปฏิบัติการและเพิ่งตั้งค่า VM เป็น # ของคอร์ฟิสิคัลเว้นแต่ว่าคุณรู้ว่าคุณต้องการให้โฮสต์มีแกนกลางที่ไม่ได้ใช้งานในขณะที่คุณกำลังยุ่งอยู่กับ VM


1

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

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


นี่ขึ้นอยู่กับประสบการณ์ของฉันกับ VirtualBox เนื่องจากฉันไม่คุ้นเคยกับผลิตภัณฑ์ VMware ฉันอาจผิด ถ้าเป็นเช่นนั้นฉันจะลบคำตอบนี้
bwDraco

0

ใช่ฉันจะบอกว่ามันขึ้นอยู่กับ แต่ฉันจะพูดในสิ่งที่ฉันชอบที่จะทำ ที่ทำงานฉันมีซีพียูคอร์ ดังนั้นสำหรับอิมเมจเสมือนของฉัน (win7) ฉันได้จัดสรร CPU สองตัว ด้วยวิธีนี้ฉันสามารถใช้ทั้งเครื่องโฮสต์และเครื่องเสมือนในเวลาเดียวกันและแต่ละเครื่องมีทรัพยากร CPU เท่ากัน

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