Czy istnieje odpowiednik systemu Windows dla „czasu kradzieży procesora” w systemie Windows?

24

W celu oceny skuteczności monitorowania poprawności na wirtualizacji platformach CPU ukraść czas staje się coraz bardziej istotne metryczny - patrz EC2 monitorowania: przypadek skradzionego CPU dla pouczającej podsumowania w kontekście Amazon EC2 papieru i IBM na czas procesora księgowości dla A bardziej szczegółowe wyjaśnienia techniczne (w tym ilustracje) koncepcji:

Czas kradzieży to procent czasu, w którym wirtualny procesor czeka na prawdziwy procesor, podczas gdy hiperwizor obsługuje inny procesor wirtualny.

W związku z tym jest obecnie ujawniany w większości powiązanych narzędzi monitorowania Unix / Linux - patrz np. Kolumny % steal lub st w sarlub top:

st - Czas kradzieży
Ilość procesora „skradzionego” z tej maszyny wirtualnej przez hiperwizora dla innych zadań (takich jak uruchomienie innej maszyny wirtualnej).

Nie byłem jednak w stanie wymyślić, jak uchwycić tę samą metrykę w systemie Windows, czy to już możliwe? (Idealnie dla AMI systemu Windows 2008 Server R2 na EC2 i oczywiście przez odpowiednie liczniki wydajności systemu Windows ).

Steffen Opel
źródło

Odpowiedzi:

33

Edycja: Aktualizacja 1 października 2013 r. - Niektóre z moich pierwotnych odpowiedzi stały się nieaktualne.

Nie jestem pewien, czy nadal jesteś aktywny na tej stronie, czy to zobaczysz, ale chciałem, abyś wiedział, że przeczytałem to pytanie dzisiaj i to mnie zafascynowało, więc spędziłem cały dzień (kiedy powinienem był pracowałem) badając wewnętrzne funkcje Hyper-V i Windows, a nawet zagłębiając się w same koncepcje wirtualizacji w nadziei, że będę gotowy odpowiedzieć na twoje pytanie.

Pozwolę sobie powiedzieć, że pochodzę z punktu widzenia Hyper-V jako platformy do wirtualizacji, ponieważ właśnie tam mam największe doświadczenie. Mimo, że mogą istnieć pewne zasady wirtualizacji, o których wiemy, że nie można się od nich odstąpić, Microsoft, VMware i Xen mają różne strategie projektowania swoich hiperwizorów.

To pierwsza rzecz, która sprawia, że ​​twoje pytanie jest trudne. Zadajesz swoje pytanie, jakby było hiperwizorem-agnostykiem, podczas gdy tak naprawdę nie jest. Na przykład Amazon EC2 korzysta z hiperwizora Xen, a metryka „Czas kradzieży CPU” widoczna w danych wyjściowych toppolecenia wydanego z maszyny wirtualnej z systemem Linux działającej na tym hiperwizorze jest wynikiem usług integracji zainstalowanych w tym systemie-gościu (lub narzędzia obsługujące wirtualizację gościa) w połączeniu z danymi dostarczonymi przez tego konkretnego hiperwizora.

Po pierwsze, pozwól mi od razu odpowiedzieć na twoje pytanie: nie ma sposobu, aby zobaczyć z wnętrza maszyny wirtualnej z systemem Windows, ile czasu procesory należące do maszyny fizycznej, na której działa hiperwizor, spędza inne rzeczy, chyba że określone narzędzia wirtualne / usługi lub narzędzia obsługujące wirtualizację dla konkretnego hiperwizora są instalowane na maszynie wirtualnej gościa ikonkretny hiperwizor, na którym działa gość, udostępnia te dane gościowi. Nawet gość systemu Windows działający na hiperwizorze Hyper-V nie będzie miał natychmiastowego dostępu do informacji dotyczących czasu spędzonego przez inne procesory na hiperwizorze. (Cytując voretaq7, coś, co „łamie czwartą ścianę”). Mimo że systemy operacyjne klienta i serwera Windows działające jako zwirtualizowani goście w Hyper-V z zainstalowanymi prawidłowymi usługami / narzędziami integracji wykorzystują „oświecenia” (które są dosłownie jądrem zmiany kodu wprowadzone specjalnie dla maszyn wirtualnych), które znacznie zwiększają ich wydajność w korzystaniu z zasobów hosta fizycznego, dolna linia jest taka, że ​​hiperwizor nie maaby przekazać gościowi więcej informacji niż chce. Oznacza to, że hiperwizor nie musi mówić maszynie wirtualnej gościa, co robi poza obsługą tej maszyny wirtualnej ... chyba że chce. Ta informacja o tym, co jeszcze robią procesory fizyczne, jest niezbędna do uzyskania metryki z perspektywy maszyny wirtualnej, takiej jak „Czas kradzieży procesora: procent czasu, w którym vCPU czeka na fizyczny procesor”.

Skąd system operacyjny gościa może to wiedzieć, skoro nawet nie zdaje sobie sprawy, że tak naprawdę został zwirtualizowany?

Innymi słowy, bez odpowiednich narzędzi integracyjnych zainstalowanych na gościu, system operacyjny gościa nie będzie nawet wiedział, że jego procesor jest w rzeczywistości procesorem v . Nie będzie nawet wiedział, że istnieje inna siła poza nim „kradnąca” cykle procesora, dlatego ta metryka nie będzie istnieć na maszynie wirtualnej gościa.

VMware zaczęło udostępniać te dane gościom Windows, a także ESXi 5.0. Narzędzia integracyjne VMware również wymagają aktualizacji u gościa. Oto odniesienie ; nazywają to „czasem skradzionego procesora”.

Hiperwizor, taki jak Hyper-V, nie zapewnia gościom bezpośredniego dostępu do zasobów fizycznych, takich jak procesory fizyczne lub rdzenie procesorów. Zamiast tego hypervisor daje im vDevs - urządzenia wirtualne - takie jak vCPU.

Doskonały przykład tego: powiedzmy, że system operacyjny gościa maszyny wirtualnej wywołuje funkcję opróżnienia TLB (bufora z tłumaczeniem), który jest fizycznym składnikiem fizycznego procesora. Gdyby systemowi-gościowi zezwolono na wyczyszczenie całej TLB na fizycznym procesorze, miałoby to negatywny wpływ na wydajność dla wszystkich innych maszyn wirtualnych, które również współużytkują tę samą fizyczną TLB. W przypadku systemu Windows to wywołanie w systemie gościa jest tłumaczone na wywołanie „hypercall” lub „enlightened”, które jest interpretowane przez hiperwizora tak, że tylko sekcja TLB, która jest odpowiednia dla tej maszyny wirtualnej, jest opróżniana.


(Co ciekawe, to sugeruje mi, że maszyny wirtualne, które nie mają odpowiednich narzędzi i / lub usług integracji, mogą mieć wpływ na wydajność wszystkich innych maszyn wirtualnych na tym samym hoście, ale jest to całkowicie poza zakresem tego tematu .)


Wszystko po to, aby powiedzieć, że nadal możesz wykryć na hoście Hyper-V czas, jaki procesor wirtualny spędził, czekając na udostępnienie prawdziwego procesora, aby mógł on zostać uruchomiony. Ale możesz zobaczyć te dane tylko w hiperwizorze Windows Hyper-V. Jeśli jest to możliwe do zobaczenia w innych hiperwizorach, wzywam innych, aby powiedzieli nam, jak to zobaczyć w tym hiperwizorze, a także jeśli jest on wystawiony na gości. (Edytuj 10/1/2013 Dziękuję evilensky za to, że właśnie to zrobiłeś!)

Moja maszyna testowa to Hyper-V Server 2012, która jest bezpłatną wersją Server 2012, która działa tylko w roli Core i Hyper-V. W rzeczywistości działa tak samo jak każdy system Windows Server 2012 z funkcją Hyper-V.

Uruchom Perfmon na partycji nadrzędnej, zwanej też hostem fizycznym. Załaduj ten licznik:

Hyper-V Hypervisor Virtual Processor\CPU Wait Time Per Dispatch\*

Zauważysz, że będzie wystąpienie tego licznika dla każdej maszyny wirtualnej na tym hiperwizorze, a także _Total. Definicja tego licznika Perfmon firmy Microsoft to:

Średni czas (w nanosekundach) spędzony na oczekiwaniu na wysłanie procesora wirtualnego do procesora logicznego.

Oczywiście chcesz, aby ta liczba była jak najniższa. W przypadku komputerów oczekiwanie prawie nigdy nie jest dobrą rzeczą.

Inne liczniki wydajności na hypervisor, które będą chciały zbadać to Hyper-V Hypervisor Root Virtual Processor\% Guest Run Time, % Hypervisor Run Timei % Total Run Time. Liczniki te podają wartości procentowe, które można wykorzystać do ustalenia faktów, takich jak czas, jaki „rzeczywiste” procesory spędzają, wykonując czynności inne niż serwisowanie maszyny wirtualnej lub wszystkich maszyn wirtualnych.

Podsumowując, metryka, której szukasz na maszynie wirtualnej gościa, zależy od hiperwizora, na którym on działa, od tego, czy hiperwizor zdecyduje się dostarczyć dane o tym, jak spędza swój czas poza obsługą tej maszyny wirtualnej, i czy gość System operacyjny ma odpowiednie narzędzia / usługi / sterowniki integracji wirtualizacji, aby być wystarczająco świadomym, aby zdać sobie sprawę, że hiperwizor udostępnia te dane.

Nie znam żadnego sposobu na gościa Windows, zainstalowanych lub nie narzędzi integracyjnych, aby zobaczyć, ile czasu, pod względem sekund lub procentu, który host maszyny wirtualnej spędził na jego serwisowaniu lub nie na obsługiwaniu go w stosunku do całkowitego czasu procesora fizycznego. (Edycja 10/1/2013: ESXi 5.0 lub nowszy udostępnia te dane maszynie wirtualnej gościa za pośrednictwem narzędzi integracji. Nadal nic w Hyper-V.)

Ryan Ries
źródło
1
+1 - epicka odpowiedź jest epicka
Mark Henderson
1
+1 za dokładną eksplorację, bardzo mile widziane. Jeśli chodzi o EC2, to najwyraźniej sprowadza się do gości Unix / Linux działających w Xen paravirtualtrybie, który jest parawirtualizowaną domeną (tj. Nie pełna wirtualizacja, system gościa jest zmodyfikowany do działania na hoście), gdzie dostępny jest czas kradzieży , w porównaniu z Windows / FreeBSD / ... uruchomieni goście Xen HVM, która jest domeną emulowaną sprzętowo (tzn. system gościa nie jest zmodyfikowany do działania na hoście), gdzie najwyraźniej tak nie jest - więc zdecydowanie negatywna odpowiedź, chyba to się liczy. Czy dobrze przeczytałem, że można go w końcu dodać?
Steffen Opel,
2
Teoretycznie może, ale nie wstrzymywać oddechu. Tak jak powiedziałem, wymaga to, aby hiperwizor specyficzny dla dostawcy i system operacyjny gościa specyficzny dla dostawcy podjęli skoordynowane wysiłki, aby udostępnić i udostępnić dane dotyczące hosta fizycznego z poziomu maszyny wirtualnej gościa. wiki.xen.org/wiki/Xen_Kernel_Feature_Matrix
Ryan Ries
2
Styczne: hiperwizory VMware będą odnosić się do zespołu kradnącego jako czas gotowości - czas oczekiwania wirtualnego procesora na obsługę przez zasoby fizyczne.
Yolo Perdiem 12.12.12
1
jest to dobrze znany temat na komputerze mainframe. Metryka jest dostępna od dziesięcioleci. To się nazywa „poczekaj na procesorze”.
2

FWIW, właśnie przejrzałem liczniki Perfmon serwera Windows 2008r2 działającego pod Hyper-V i nie widziałem nic związanego z czasem kradzieży (ani z wirtualizacją w ogóle).

uSlackr
źródło
Dzięki za sprawdzenie - najwyraźniej liczniki wirtualizacji dla Hyper-V powinny być faktycznie dostępne, może najpierw muszą zostać zainstalowane / aktywowane? Nadal jednak nie jestem w stanie zidentyfikować / wydedukować podobnych / powiązanych danych.
Steffen Opel