Düzenleme: 1 Ekim 2013 tarihinde güncelleniyor - Orijinal cevabımın bir kısmı eski moda oldu.
Hala bu sitede aktif olup olmadığınızdan veya bunu göreceğinizden emin değilim, ancak bugün bu soruyu okuduğumu ve beni büyülediğini bilmenizi istedim ve bu yüzden bütün günümü (gerektiğinde çalışıyorlardı) Hyper-V ve Windows kurumlarını araştırıyorlar ve hatta sorunuzu cevaplamaya hazır olabileceğimi umarak sanallaştırmanın kavramlarını bile araştırıyorlar.
Hyper-V açısından sanallaştırma platformu olarak geldiğimi söyleyerek önsözlememe izin verin, çünkü en çok deneyime sahip olduğum yer burası. Belirli sanallaştırma prensipleri olsa da, bildiğimiz gibi, bunlardan sapma olamaz, Microsoft ve VMware ve Xen'in hepsinin hiper yöneticilerini nasıl tasarladıkları için farklı stratejileri vardır.
Sorunuzu zorlaştıran ilk şey bu. Sorunuzu, hiper-agnostikmiş gibi, gerçekte olmadığı zaman ortaya koyarsınız. Örneğin, Amazon EC2, Xen hiper denetleyicisini kullanır ve top
bu hiper denetleyici üzerinde çalışan bir Linux VM içinden yayınlanan bir komutun çıktısında gördüğünüz "CPU Steal Time" metriğini , bu konuk işletim sistemine kurulu olan entegrasyon hizmetlerinin bir sonucudur. (veya konuğun sanallaştırmaya duyarlı araçları) o belirli hiper yönetici tarafından sağlanan verilerle bağlantılı olarak.
Öncelikle bana sadece dik sorunuza cevap olsun: Windows çalıştıran bir sanal makine içinden görmek için hiçbir yolu yoktur ne kadar zaman hipervizör çalışır başka şeyler yaparken harcadığı fiziksel makineler ait işlemciler, sürece özellikle sanal araçları / belirli hiper yönetici için hizmet veya sanallaştırma uyumlu araçları konuk yüklü olan VM veKonuğun üzerinde çalıştığı hiper yönetici, bu verileri konuğa sunar. Bir Hyper-V hipervizöründe çalışan bir Windows konuğu bile, hipervizördeki fiziksel işlemcilerin başka şeyler yapmak için harcadıkları süreye ilişkin bilgilere anında erişemeyecektir. (Voretaq7'den alıntı yapmak gerekirse, "dördüncü duvarı kıran" bir şeydir.) kod değişiklikler özellikle belirgin bir fiziksel konağın kaynakları kullanarak performanslarını artırmak VM'lerin) için yapılan, alt çizgi hiper yönetici olmamasıdır varKonuk işletim sistemine istediğinden daha fazla bilgi vermek. Araçlarla O hiper yönetici değil var o VM ... o istemediği sürece hiç servis dışında yapıyor başka ne bir konuk VM anlatmak için. Fiziksel işlemcilerin ne yaptıkları hakkında bu bilgi, "CPU Steal Time: vCPU'nun fiziksel bir CPU için beklediği sürenin yüzdesi" gibi, VM perspektifinden bir metrik türetmek için gereklidir.
Konuk işletim sistemi aslında sanallaştırıldığını bile anlamadıysa bunu nasıl bilebilirdi?
Başka bir deyişle, konuk yüklü doğru entegrasyon araçları olmadan, misafir işletim sistemi bile işlemci aslında bir olduğunu bilmeyecektir v işlemci. İşlemci döngülerinden "çalmak" dışında başka bir kuvvetin olduğunu bile bilmeyecek, bu nedenle konuk VM'de metrik olmayacak.
VMware, bu verileri Windows misafirlerine ve ESXi 5.0'a açıklamaya başladı. VMware entegrasyon araçlarının da konukta güncellenmesi gerekiyor. İşte bir referans ; "İşlemci Çalınan Süresi" olarak adlandırıyorlar.
Hyper-V gibi bir hiper yönetici, misafirlere fiziksel işlemciler veya işlemci çekirdeği gibi fiziksel kaynaklara doğrudan erişim sağlamaz. Bunun yerine, hipervizör onlara vDev'leri (vCPU'lar gibi sanal aygıtlar) verir.
Bunun başlıca bir örneği: Sanal makine misafirinin işletim sistemine geçmesi, fiziksel bir CPU'nun fiziksel bir bileşeni olan TLB'yi (çeviri görünüm kenarı tamponu) temizlemek için çağrı yaptığını söyler. Konuk işletim sisteminin TLB'nin tamamını fiziksel bir işlemcide temizlemesine izin verilirse , aynı fiziksel TLB'yi paylaşan diğer tüm VM'ler için de olumsuz performans etkileri olacaktır. Windows durumunda, konuk işletim sistemindeki bu çağrı, hipervizör tarafından yorumlanan "sanal arama" veya "aydınlanmış" bir çağrıya çevrilir, böylece TLB'nin yalnızca bu sanal makineyle ilgili bölümü temizlenir.
(İlginçtir ki, bana uygun entegrasyon araçlarına ve / veya hizmetlere sahip olmayan konuk VM'lerin aynı ana bilgisayardaki tüm diğer sanal makinelerin performansını etkileme yeteneğine sahip olabileceğini, ancak bu konunun kapsamı dışında kaldığını gösteriyor. .)
Bütün bunlar bir Hyper-V sunucusunda, sanal bir işlemcinin gerçek bir işlemcinin kullanıma hazır olmasını beklemek için harcadığı zamanı hala tespit edebileceğinizi söylemektedir . Ancak bu verileri yalnızca bir Windows Hyper-V hipervizöründe görebilirsiniz. Bunu diğer hipervizörlerde görmek mümkün ise, diğerlerini bu hipervizörde nasıl göreceğimizi ve konuklara açık olup olmadığını bize söylemelerini rica ediyorum. (Düzenleme 10.01.2013 Evilensky'yi tam da bunun için teşekkür ederim!)
Test makinem, yalnızca Core ve Hyper-V rolünü çalıştıran, Server 2012'nin ücretsiz sürümü olan Hyper-V Server 2012 idi. Etkin bir şekilde Hyper-V çalıştıran herhangi bir Windows Server 2012 ile aynıdır.
Fire up Ana bölümünüzdeki Perfmon, diğer bir deyişle fiziksel ana bilgisayar. Bu sayacı yükle:
Hyper-V Hypervisor Virtual Processor\CPU Wait Time Per Dispatch\*
Bu hiper denetleyicideki her sanal makine için o sayacın bir örneğinin ve _Total'ın olacağını fark edeceksiniz. Bu Perfmon sayacının Microsoft tanımı şöyledir:
Sanal işlemcinin bir mantıksal işlemciye gönderilmesini beklemek için harcanan ortalama süre (nanosaniye olarak).
Açıkçası, bu sayının mümkün olduğunca düşük olmasını istiyorsun. Bilgisayarlar için bekleme neredeyse hiç iyi bir şey değildir.
Araştırmak istediğiniz edeceğini hipervizör Diğer performans sayaçlarını vardır Hyper-V Hypervisor Root Virtual Processor\% Guest Run Time
, % Hypervisor Run Time
ve % Total Run Time
. Bu sayaçlar, "gerçek" işlemcilerin bir VM'ye veya tüm VM'lere hizmet vermekten başka şeyler yapmak için ne kadar zaman harcadıkları gibi gerçekleri belirlemek için kullanılabilecek yüzdeleri sağlar .
Sonuç olarak, konuk bir sanal makinede aradığınız metrik, üzerinde çalıştığı hipervizöre, hipervizörün, bu VM’ye hizmet etmekten başka zamanını nasıl harcayacağına ilişkin verileri sağlamayı seçip seçmemesine ve misafir olup olmadığını belirlemeye bağlıdır. İşletim sistemi, hipervizörün bu verileri sağladığını fark edecek kadar farkında olması için sanallaştırma entegrasyon araçlarına / hizmetlerine / sürücülerine sahiptir.
VM sunucusunun ne kadar zaman, saniye veya yüzde cinsinden ne kadar zaman harcadığını görmek için, VM sunucusunun toplam fiziksel işlemci saatine göre hizmet vermek için harcadığı ya da hizmet vermediğini bilmiyorum. (Düzenleme 10.01.2013: ESXi 5.0 veya daha iyisi bu verileri entegrasyon araçlarıyla konuk VM'ye sunar. Yine de Hyper-V'de hiçbir şey yoktur.)