ฉันพบว่าแม้ว่าจะเป็นไปได้ (และเร็วขึ้น) ใน VirtualBox (ประสบการณ์ของฉันคือเวอร์ชัน 5.1.0) เพื่อจัดสรร vCPU ให้กับ VM โดยใช้ตัวประมวลผลเชิงตรรกะ แต่อาจพบปัญหาภายในระบบปฏิบัติการแขกเมื่อทำงานที่โหลดสูง . ในกรณีของฉัน VM 2012 ของ Windows 2012 ที่มี 12 vCPU บนโฮสต์ 8 หลัก Ubuntu 16.04 (ที่รายงาน 16 ตัวประมวลผลเชิงตรรกะ) จะ BSOD ในระหว่างการโหลด CPU สูงด้วยข้อความแสดงข้อผิดพลาด DPC_WATCHDOG_VIOLATION การวิเคราะห์แบบ minidump โดยใช้osronline.comแสดงให้เห็นว่า e1g6032e.sys (ไดรเวอร์เครือข่าย Intel 100/1000 ซึ่งเป็นเจ้าของ Windows) เป็นสาเหตุของการละเมิด
สิ่งนี้ทำให้ฉันเชื่อว่าการจับเวลาในระบบปฏิบัติการเกสต์นั้นได้รับผลกระทบในทางลบเมื่อทำการจัดสรร vCPU ตามความสามารถของตัวประมวลผลเชิงตรรกะและการรัน VM ที่โหลดสูงเป็นระยะเวลานาน ในกรณีของฉันโหลด CPU 100% ภายใน Windows VM สักสองสามนาทีจะทำให้ BSOD หลังจากลดจำนวน vCPU เป็น 8 (ซึ่งสอดคล้องกับจำนวนฟิสิคัลคอร์ของโฮสต์) Windows VM จะไม่ BSOD อีกต่อไปภายใต้สถานการณ์โหลดสูงที่คล้ายกัน เอกสารออนไลน์จาก VirtualBox หนึ่งกล่าวว่าควรทำเช่นนี้ แต่ไม่ได้ให้เหตุผลใด ๆ
ในสภาพแวดล้อมของฉันยังมี Ubuntu VM อีกสองตัวที่กำลังทำงานแต่ละตัวมี 8 vCPU ของตนเอง โหลดได้น้อยที่สุดในเวลาที่ปัญหา BSOD ของ Windows VM