ทำไม VirtualBox ถึงแสดงซีพียูมากกว่าที่มีอยู่


6

ฉันมี Intel Core i7 3930K พร้อมคอร์ CPU 6 คอร์ ตอนนี้ฉันเข้าใจแล้วว่าทุกแกนนั้นสามารถจัดการ 2 เธรดแยกกันได้ นั่นทำให้คอร์เสมือน 12 คอร์ - ซึ่งฉันสามารถเห็นได้โดยใช้มอนิเตอร์ระบบของฉัน (ดูภาพด้านล่าง)

แต่เมื่อฉันสร้างเครื่องเสมือนโดยใช้ซอฟต์แวร์ VirtualBox จาก Oracle ฉันสามารถจัดสรร24 CPUให้กับเครื่องนั้นได้ทันที งั้นเหรอ

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

ดังนั้นหมายความว่าอย่างไร มี 24 คอร์จริงหรือ VirtualBox ผิดหรือเปล่า?

และจะเกิดอะไรขึ้นถ้าฉันจัดสรรคอร์ตัวอย่าง 4 คอร์ - มีการเพิ่มจำนวนเท่าใดในเครื่องเสมือนจริง?

คำตอบ:


11

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


1
ขอบคุณมาก +1 คุณตอบคำถามติดตามแล้วทำไม Windows 8 ของฉันถึงหยุดนิ่งอยู่เสมอ! :)
Waqar Lim

1
คอร์ "พิเศษ" จะถูกจำลอง (ดีทั้งหมดจะถูกจำลองถ้าคุณดูด้วยวิธีนั้น) มันใช้งานได้ดี แน่นอนว่าประสิทธิภาพการทำงานแบบสะสมจะไม่สูงไปกว่าฮาร์ดแวร์จริง การค้างและปัญหาเป็นข้อบกพร่องส่วนใหญ่ในซอฟต์แวร์ VM ที่อาจได้รับการแก้ไขในเวอร์ชันที่ใหม่กว่า ฉันเพิ่งเริ่มต้น 6 คอร์ VM บน HW คอร์ 4 และทำงานได้ดีโหลดคอร์เสมือนทั้ง 6 คอร์ (โดยใช้ VirtualBox 4.3.14 กับ Windows) VmWare ยังรองรับสิ่งนี้
David Balažic

@ DavidBalažicมันไม่ทำงาน "ได้ดี" มันสามารถทำให้สูญเสียประสิทธิภาพที่น่ากลัว บางครั้งระบบปฏิบัติการจะคิดว่ารหัสกำลังทำงานอยู่ในคอร์อื่น (เมื่อไม่ได้ใช้งานจริง) และรอให้ใช้ทรัพยากรที่จำเป็นในการปลดล็อค มันสามารถทำให้เกิดการสูญเสียประสิทธิภาพการทำงานที่รุนแรง ระบบปฏิบัติการจำเป็นต้องรู้ว่าเธรดกำลังรันอยู่หรือไม่
David Schwartz

@DavidSchwartz มันอาจทำให้ประสิทธิภาพแย่ลง นั่นคือ 99% ขึ้นอยู่กับการใช้งาน VM เกี่ยวกับระบบปฏิบัติการรอคุณพูดถึง: ถ้าคุณหมายถึง guest OS แล้วมันจะทำงานได้ดีเนื่องจาก VM จะ "หยุด" เธรด "ที่รอและรันเธรดอื่นไม่เกี่ยวข้องกับจำนวนของฟิสิคัลคอร์จริง (vmware มีความยืดหยุ่นมากขึ้นที่นี่ แต่ขึ้นอยู่กับรุ่นที่ใช้อีกครั้ง) บางทีคุณสามารถแสดงกรณีที่เกิดขึ้นจริงที่ปัญหาที่คุณพูดถึงเกิดขึ้น
David Balažic

@ DavidBalažicมันจะไม่ทำเช่นนั้นเพราะมันไม่มีทางรู้ว่าเธรดรออะไรอยู่ มันเกิดขึ้นจริง ในความเป็นจริงแล้วระบบปฏิบัติการหมุนวนเมื่อทรัพยากรที่พวกเขาต้องการถูกเก็บไว้โดยเธรดอื่นที่พวกเขาเชื่อว่ากำลังทำงานอยู่บนคอร์ มันลดประสิทธิภาพลงอย่างมากด้วยปัจจัยหลายพันตัวสำหรับ OS ที่ไม่ทราบว่า thread ไม่ทำงาน
David Schwartz

1

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

คุณสามารถมีได้สูงสุด 5 คอร์ในกรณีของคุณหากคุณไปที่นั้นในพื้นที่สีแดงเครื่องเสมือนของคุณจะไม่เสถียร

กล่องเสมือนแนะนำจำนวนคอร์สูงสุดที่คุณใช้ควรเป็น n-1 ของฟิสิคัลคอร์ของคุณ Hyper-Threading ไม่นับรวม

เธรดนี้บนฟอรัมกล่องเสมือนสนับสนุนสิ่งนี้


แต่ทำไม VirtualBox ถึงบอกฉันว่าแม้ 12 คอร์คือ "ตกลง"? (ดูภาพหน้าจอ) ฉันเพิ่งลอง 8 และมันจะหยุดอย่างต่อเนื่อง ...
Waqar Lim

มันไม่ได้ทำเช่นนี้กับ VirtualBox เวอร์ชันใหม่
เต็ก

0

โปรเซสเซอร์ i7 3930K มี VT-x

Intel® Virtualization Technology (VT-x) อนุญาตให้แพลตฟอร์มฮาร์ดแวร์เดียวทำงานเป็นแพลตฟอร์ม“ เสมือน” หลายอย่าง มันมีการปรับปรุงการจัดการโดยการ จำกัด การหยุดทำงานและการบำรุงรักษาผลผลิตโดยแยกกิจกรรมการคำนวณเป็นพาร์ติชันแยกต่างหาก

นั่นหมายความว่าคุณสามารถจำลอง CPU ได้มากกว่าเธรดที่สามารถจัดการได้ดังนั้นจึงเห็นจำนวนของ CPU ที่สูงขึ้นเมื่อใช้เครื่องเสมือน


1
นั่นไม่ใช่สิ่งที่ VT-x เป็นจริงเลย
Daniel B

0

ในกรณีของฉันใช้ 6 ของเรา 8 CPUs ใน 4 คอร์โปรเซสเซอร์ 8 เธรดได้เร็วกว่าในการทดสอบกว่า 4 จาก 8 แม้จะมีกล่องเสมือนแนะนำว่าฉันอาจได้รับการย่อยสลาย ดังนั้นฉันคิดว่า Virtual Box ป้องกันไม่ให้ยิงตัวเองเข้าสู่เท้าถ้าคุณเป็นมือใหม่และจะบ่นเกี่ยวกับความเชื่องช้าในขณะที่ในฐานะผู้ใช้ระดับสูงคุณอาจผ่านความระมัดระวังนี้ได้

คำตอบยาว:

ฉันมีIntel-Core-i7-2820QMพร้อม 4 คอร์และ 8 เธรด ฉันมี Virtual Box 5.2.6 พร้อมโฮสต์ Windows 10 และแขก

การตั้งค่า 6 CPUs out 8 ใน Virtual Box Guest การตั้งค่าให้ค่าถัดไปในuserbenchmark :

มัลติคอร์

MC Int 307
MC Float 326
MC มิกซ์ 315
47% 316 จุด


Quad core

QC Int 270
QC ลอย 272
QC ผสม 268
61% 270 คะแนน

CPU-Z:

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

การตั้งค่า 4 CPUวินาที:

Userbenchmark

มัลติคอร์

MC Int 260
MC Float 269
MC มิกซ์ 269
40% 266 แต้ม

Quad core

QC Int 260
QC ลอย 264
QC ผสม 262
59% 262 แต้ม

CPU-Z:

1108 4.21 6

หมายเหตุ:

ไม่มีการควบคุมปริมาณความร้อน (ซึ่งเกิดขึ้นเมื่อ 100 องศาเซลเซียส) ในระหว่างการทดสอบการทำงาน:

997 3.37 4

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