Hyper-V tarafından barındırılan bir VM için artan “mantıksal işlemci sayısı” bu VM'nin performansını neden artırıyor?


9

Anladığım kadarıyla, sanal makineler ( Relative Weighteşit olduğu varsayılırsa ) işlemciden eşit bir pay alır.

VM'ye biraz işlem süresi verildiğinde, VM'nin kullanımı için birden fazla çekirdek veya tek bir çekirdek görüp görmediği önemli değildir, çünkü işlem ne olursa olsun Hyper-V ana bilgisayarındaki bir dizi işlemciden çıkar. Ancak, Number of logical processorsbelirli bir VM için Hyper-V'de ayarı 1'den 4'e ayarladığımda, büyük bir performans artışı görüyorum.

Geçerli kurulumumdaki özellikler yaklaşık:

  • Hyper-V ana bilgisayarında 32 GB RAM, 24 mantıksal işlemci (yanlış kelime?), Birkaç TB alan var.

  • VM'lere 6 GB RAM, 1 veya 4 çekirdek, birkaç yüz GB alan ve 2008 R2 çalışmaktadır.

Geçmiş Hyper-V kurulumlarında da benzer bir şey yaşadım.

Yanıtlar:


20

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.


7
@ Flapjack00 Hayır ... az önce söylediğim şeyin tam tersi. 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 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 atanmış yalnızca 1 vCPU varsa, aynı anda yalnızca bir iş parçacığının çalışması için zamanlayabilir.
Ryan Ries

1
Ah! Bu durumda, 4 vCPU ile yapılandırılmış bir VM, aynı anda 4 iş parçacığı zamanlayabilir. Sunucumda yeterli vCPU bulunduğunu varsayarsak, bu 4 iş parçacığı aynı anda işlenebilir mi?
Blackjack00

1
@ Flapjack00 "Ana makinemde yeterli vCPU mevcut olduğu varsayılarak" - Ana makinede vCPU yok, VM var. Ana bilgisayarda, vCPU'ların atandığı çekirdekler (veya daha doğrusu mantıksal işlemciler - tek bir çekirdeğin, Hiper iş parçacıkları gibi çoklu mantıksal işlemciler olabilir) vardır.
BlueRaja

2
@ Dan, bu VMware'e özgü bir sorun. Hyper-V'yi etkilemez.
Jake Oshins

1
VMware'in ESX 3.5'te kaldırıldığı "x vCpu Y cpu kilitleri gerektirir", bu yüzden artık hiçbir modern hipervizör için geçerli değildir. Bununla birlikte, VM'lerinize gereksiz kaynaklar atamama konusunda dikkatli olmalısınız ve vCpu'nun özellikle önemi vardır. Çok fazla ve genel olarak performans kaybedersiniz.
pauska

3

Atanan sanal CPU'ların miktarı önemlidir. VM'de çalışan yazılım, bir VM'de olduğunun ve ana makinenin VM'nin sunduğundan daha fazlasını yapabileceğinin farkında değildir. Dolayısıyla, birden fazla CPU çekirdeğinden yararlanabilecek bir yazılım kullanıyorsanız, yalnızca bir çekirdeğin atanmış olduğu bir VM'de, yazılım görevleri için yalnızca bir çekirdeği zamanlayacak ve VM de bir zaman. VM'ye daha fazla çekirdek verdiğinizde, yazılım, ana bilgisayarın CPU'sunun VM için zamanlayacağı daha paralel görevler zamanlayabilir.

VM'lere çekişmeye neden olmamak için çok fazla vermemeye dikkat edin, eğer bir VM ana bilgisayardan daha fazla sanal çekirdeğe sahipse, VM kendisine karşı yarışacaktır ve vmware gibi çete planlı hipervizörler durumunda, VM asla hiçbir şey yapamazsınız (aşırı konumlandırma seçeneği elbette yönetim katmanı tarafından engellenir).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.