Các máy ảo trong mọi trình ảo hóa mà tôi biết có thể sử dụng các CPU ảo bổ sung để lên lịch cho các luồng thực thi đồng thời bổ sung.
Chính xác đó là lớp trừu tượng giữa máy vật lý và máy ảo khiến nó không hoạt động theo cách bạn mô tả. VM không biết máy có vật lý có bao nhiêu lõi. VM không "nhìn thấy" CPU vật lý (hoặc lõi) trên máy vật lý. Trình ảo hóa cung cấp cho VM bao nhiêu CPU ảo và HĐH khách sử dụng các CPU ảo đó để lên lịch cho các luồng đồng thời bổ sung ... Tổng số CPU ảo mà trình ảo hóa cung cấp cho các máy ảo thậm chí có thể vượt quá số lượng CPU vật lý / lõi trong máy.
Nói một cách khác, một máy ảo, khi được gán một vCPU duy nhất, lên lịch các luồng của nó như thể nó chỉ có một CPU. Không quan trọng có bao nhiêu lõi trong máy vật lý cơ bản. (Mặc dù đáng chú ý là máy vật lý có thể lên lịch cho một luồng VM trên một lõi vật lý cho một lượng tử luồng hoặc lát thời gian, sau đó chạy nó trên lõi vật lý khác vào lần tới khi nó được lên lịch để chạy. Máy ảo có Không có ý tưởng nào về điều đó đang xảy ra. Tất cả những gì nó biết là nó chỉ có thể lên lịch một luồng tại một thời điểm, từng luồng một, bởi vì nó chỉ có một CPU ảo.)
Và hãy rất rõ ràng về các điều khoản của chúng tôi ở đây. Bạn gán vCPU hoặc CPU ảo cho VM, không phải "lõi". Lõi (theo tôi giả sử bạn có nghĩa là các đơn vị xử lý vật lý có chung một ổ cắm vật lý) không bằng vCPU. Có một lớp trừu tượng giữa chúng. Nếu một VM chỉ có 1 vCPU được gán cho nó, nó chỉ có thể lên lịch cho một luồng để chạy tại một thời điểm. Đó là lý do tại sao VM của bạn chạy nhanh hơn với 2 -4 CPU ảo được gán cho nó - bởi vì giờ đây nó có thể lên lịch nhiều hơn một luồng để chạy đồng thời.
Tuy nhiên, chắc chắn có luật giảm lợi nhuận ở đây, vì số lượng CPU ảo quá mức phải chịu chi phí cao hơn và cao hơn trong những thứ như đồng bộ hóa, v.v.
Có một số khác biệt nhỏ giữa cách Hyper-V và VMware hypannerors lên lịch cho các luồng máy ảo để thực thi và chúng khác nhau về cách tiếp cận tài nguyên vật lý "quá mức", nhưng đây là một khái niệm chung tốt để bắt đầu.