ฉันจะเปิดใช้งานหลายคอร์ในสภาพแวดล้อมเสมือนจริงของฉันได้อย่างไร


20

ฉันติดตั้ง Ubuntu ในสภาพแวดล้อมเสมือนโดยใช้ Oracle VM VirtualBox Manager และใช้งานได้ดี

อย่างไรก็ตามฉันต้องการเปิดใช้งานหลายคอร์ - ตามที่เห็นในภาพด้านล่างเครื่อง Windows ของฉันมี 2 คอร์:

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

ตอนนี้เมื่อฉันเรียกใช้lscpuใน Ubuntu ฉันได้รับข้อมูลต่อไปนี้แสดงให้เห็นว่ามีการใช้งาน 1 คอร์เท่านั้น:

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

ฉันได้ลองเปลี่ยนการตั้งค่าของกล่องเสมือนเพื่อเปิดใช้งานโปรเซสเซอร์หลายตัว แต่ไม่อนุญาตให้ทำตามที่แสดงในภาพด้านล่าง:

ภาพ

ฉันจะเปิดใช้งานหลายคอร์ (โปรเซสเซอร์) ในสภาพแวดล้อมเสมือนจริงของฉันได้อย่างไร

คำตอบ:


17

ในการเปิดใช้งาน CPU มากกว่า 1 ตัวใน VM ของคุณจำเป็นต้องมีการตั้งค่าต่อไปนี้:

  • ฮาร์ดแวร์เกสต์เสมือน 64 บิตในแท็บการตั้งค่าทั่วไป (สำหรับแขก 64 บิต)

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

  • เปิดใช้งาน I / O APIC ในแท็บการตั้งค่าเมนบอร์ด

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

  • เปิดใช้งานการจำลองเสมือนสำหรับฮาร์ดแวร์ (VT-x / AMD-V) ในแท็บการเร่งความเร็ว

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

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

หากคุณไม่ได้เปิดใช้งานCPU ร้อนเสียบคุณสมบัติของ VirtualBox เปลี่ยนแปลงของจำนวนแกนสามารถทำได้ในเครื่องที่ถูกปิดตัวลง

การเพิ่มประสิทธิภาพในแขกเป็นเพียงการคาดหวังสำหรับซอฟต์แวร์ที่ใช้ประโยชน์จากหลายแกน จากนั้นให้แกนประมวลผลทั้งหมดที่มีฝาปิดการทำงานมีเหตุผล


ดังนั้นจึงเป็นไปไม่ได้ใน Ubuntu ขนาด 32 บิต?

1
@cipricus ขอบคุณสำหรับการแจ้งให้ทราบล่วงหน้า 64- บิตเป็นสิ่งจำเป็นสำหรับแขก 64 บิตเท่านั้น
Takkat

@ Takkat ฉันใช้ Ubuntu 32 บิตเป็น guest OS ฉันจะเปิดใช้งานซีพียูหลายตัวได้อย่างไร
smwikipedia

15

หาก VM ของคุณกำลังทำงานอยู่ (หรือ "บันทึก") คุณจะไม่สามารถเปลี่ยนค่านั้นได้ ปิด VM ของคุณก่อน


แม้ว่ามันจะเจ๋งจริง ๆ ถ้าเราสามารถสลับโปรเซสเซอร์ที่รันไทม์ นั่นจะทำให้ซีพียูควบคุมปริมาณมิติใหม่
Tomáš Zato - Reinstate Monica


1

ฉันทำงานกับโปรแกรมแบบมัลติเธรดซึ่งดำเนินการตามลำดับบนเครื่องเสมือน ฉันมีปัญหาคล้ายกันกับที่คุณมี ฉันแก้ไขมันโดย:

  1. หยุดเครื่องเสมือนหรือออกจาก
  2. เรียกใช้ VMWare -> เลือกเครื่อง -> คลิกระบบ -> คลิกโปรเซสเซอร์ -> เปลี่ยนโปรเซสเซอร์จำนวน
  3. เริ่มเครื่องเสมือน

std :: thread :: hardware_concurrency () ก่อนหน้านี้จากเธรดมาตรฐานที่ส่งคืน 1 แต่หลังจากการเปลี่ยนแปลงจะส่งคืนจำนวนของ CPU บนการตั้งค่าของเครื่องเสมือน

ตอนนี้ฉันสามารถเรียกใช้โปรแกรมแบบมัลติเธรดของฉันบน VM ได้สำเร็จ

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