เครื่องเสมือนในไฮเปอร์ไวเซอร์ทุกตัวที่ฉันรู้จักสามารถใช้ CPU เสมือนเพิ่มเติมซึ่งกำหนดตารางเวลาเพิ่มเติมของการเรียกใช้เธรดพร้อมกัน
มันเป็นชั้นของนามธรรมที่เป็นนามธรรมระหว่างเครื่องทางกายภาพและเครื่องเสมือนที่ทำให้มันไม่ทำงานตามที่คุณอธิบาย VM ไม่ทราบว่ามีฟิสิคัลคอร์จำนวนเท่าใด VM ไม่ "เห็น" ฟิสิคัล CPU (หรือคอร์) บนเครื่องฟิสิคัล ไฮเปอร์ไวเซอร์มอบ VM จำนวนซีพียูเสมือนจริงและแขกระบบปฏิบัติการใช้ CPU เสมือนเหล่านั้นเพื่อกำหนดเธรดที่เกิดขึ้นพร้อมกันเพิ่มเติม ... จำนวน CPU เสมือนทั้งหมดที่ไฮเปอร์ไวเซอร์ส่งมอบให้กับเครื่องเสมือนอาจเกินจำนวนฟิสิคัล CPU / แกนในเครื่อง
กล่าวอีกวิธีหนึ่งว่าเครื่องเสมือนเมื่อกำหนด vCPU เดียวให้กำหนดเวลาเธรดราวกับมี CPU เพียงตัวเดียว ไม่สำคัญว่ามีกี่คอร์ในเครื่องทางกายภาพพื้นฐาน (แม้ว่าจะเป็นที่น่าสังเกตว่าเครื่องทางกายภาพอาจกำหนดเวลาให้ VM thread หนึ่งเธรดบนหนึ่งฟิสิคัลคอร์สำหรับหนึ่งเธรดควอนตัมหรือแบ่งเวลาจากนั้นเรียกใช้บนฟิสิคัลคอร์อื่นในครั้งถัดไปที่มีการกำหนดเวลา ไม่มีความคิดใด ๆ ที่เกิดขึ้นแม้ว่าทั้งหมดรู้ว่ามันสามารถกำหนดเวลาหนึ่งเธรดในแต่ละครั้งหนึ่งหลังจากที่อื่นเพราะมันมี CPU เสมือนเดียว)
และขอให้ชัดเจนเกี่ยวกับเงื่อนไขของเราที่นี่ คุณกำหนด vCPU หรือ CPU เสมือนให้กับ VM ไม่ใช่ "แกนประมวลผล" คอร์ (โดยที่ฉันถือว่าคุณหมายถึงหน่วยการประมวลผลทางกายภาพที่ใช้ซ็อกเก็ตฟิสิคัลเดียว) ไม่เท่ากับ vCPU มีชั้นของสิ่งที่เป็นนามธรรมระหว่างพวกเขา หาก VM มีการกำหนด 1 vCPU ไว้เท่านั้นมันสามารถกำหนดเวลาให้เธรดเดียวเท่านั้นที่จะเรียกใช้ในแต่ละครั้ง นั่นคือเหตุผลที่ VM ของคุณทำงานได้เร็วขึ้นด้วย 2 -4 CPU เสมือนที่กำหนดให้กับมันเพราะตอนนี้คุณสามารถกำหนดเวลามากกว่าหนึ่งเธรดเพื่อให้ทำงานพร้อมกันได้
อย่างไรก็ตามมีกฎของการลดลงของผลตอบแทนที่นี่อย่างแน่นอนเนื่องจากจำนวนซีพียูเสมือนจำนวนมากต้องเสียค่าใช้จ่ายที่สูงขึ้นและสูงขึ้นในสิ่งต่าง ๆ เช่นการซิงโครไนซ์เป็นต้น
มีความแตกต่างกันเล็กน้อยระหว่างวิธีที่ Hyper-V และ VMware hypervisors กำหนดเวลาเธรดเครื่องเสมือนสำหรับการดำเนินการและพวกเขาแตกต่างกันในวิธีการใช้ทรัพยากรทางกายภาพ "oversubscription" แต่นี่เป็นแนวคิดทั่วไปที่ดีในการเริ่มต้น