Bildiğim her hipervizördeki sanal makineler, eşzamanlı ek yürütme iş parçacıkları zamanlamak için ek sanal CPU'lar kullanabilir.
Bu tam yapar fiziksel makine ve sanal makine arasındaki soyutlama o katman var değil açıkladığınız şekilde çalışır. VM, fiziksel makinenin kaç tane çekirdeğe sahip olduğunun farkında değil. VM, fiziksel makinedeki fiziksel CPU'ları (veya çekirdekleri) "görmez". Hiper yönetici sanal makineye kaç tane sanal CPU verir ve konuk işletim sistemi bu sanal CPU'ları ek eşzamanlı iş parçacıkları planlamak için kullanır. makinede çekirdek.
Başka bir deyişle, bir sanal makine, tek bir vCPU atandığında, iş parçacıklarını yalnızca bir CPU'ya sahipmiş gibi zamanlar. Alttaki fiziksel makinede kaç çekirdek olduğu önemli değil. (Fiziksel makinenin, bir VM çekirdeğinin bir fiziksel çekirdek üzerindeki bir iş parçacığı kuantum veya zaman dilimi için zamanlayabileceğini ve daha sonra bir sonraki çalıştırılmasında farklı bir fiziksel çekirdek üzerinde çalıştırabileceğini belirtmek gerekir. Ancak bunun bildiği tek şey, her seferinde yalnızca bir iş parçacığı, birbiri ardına zamanlayabilmesidir, çünkü yalnızca bir sanal CPU'ya sahiptir.)
Ve burada şartlarımız hakkında çok net olalım. VM'lere vCPU'ları veya sanal CPU'ları "çekirdeklere" atamazsınız. Çekirdekler (bunun tek bir fiziksel soketi paylaşan fiziksel işlem birimleri anlamına geldiğini varsayıyorum) vCPU'lara eşit değildir. Aralarında bir soyutlama tabakası var. Bir VM'ye yalnızca 1 vCPU atanmışsa, aynı anda çalışacak yalnızca bir iş parçacığı zamanlayabilir. VM'nizin kendisine atanmış 2-4 sanal CPU ile daha hızlı çalışmasının nedeni budur, çünkü artık aynı anda çalışmak için birden fazla iş parçacığı zamanlayabiliyor.
Bununla birlikte, burada çok sayıda sanal CPU, senkronizasyon vb.
Hyper-V ve VMware hipervizörlerinin sanal makine iş parçacıklarını yürütme için nasıl planlamaları arasında küçük farklılıklar vardır ve fiziksel kaynak "aşırı abonelik" yaklaşımlarına göre farklılık gösterirler, ancak bu başlamak için iyi bir genel kavramdır.