Hyper-V + SLAT w Windows 8 i Windows Server 2012


Czy wiesz, że aby zadziałała nowa funkcja w Windows 8, czyli Client Hyper-V potrzebne jest w Twoim komputerze/procesorze coś, co nazywa się SLAT? A wiesz dlaczego jest to tam potrzebne? Postaram się w kilku słowach wyjaśnić w czym rzecz. Zapraszam.

Nie będę może opisywał czym jest Hyper-V, ale warto powiedzieć, że technologia ta jest już dostępna w Windows 8 i moim zdaniem będzie bardzo przydatna zarówno dla specjalistów IT jak i programistów (o tym jeszcze chwilę później).

W sumie temat zacząłem jeszcze pod koniec marca, kiedy napisałem post o różnicach w tym jak Hyper-V działa w klienckiej wersji (Windows 8) oraz serwerowej (Windows Server 2012). Zainteresowanych odsyłam do tego posta, ale w kontekście dzisiejszego tekstu ważne jest to, że już wtedy pisząc o różnicach – pisałem, że jeden system wymaga, aby procesor wspierał SLAT, a drugi tego nie wymaga.

SLAT

O samym SLAT w dużym skrócie napisał przedwczoraj Grzesiek Tworek (MVP) na blogu TechNet. I zainteresowanych delikatnym pogłębieniem wiedzy odsyłam tam. Ale przy okazji tego posta dopiszę, że miałem mały wkład w PPS na końcu:

PPS Przyznaję się bez bicia, że pomyliłem systemy. Dziękuję Mariuszowi za zwrócenie uwagi, przepraszam i czym prędzej poprawiam. Tak czy inaczej, moim celem było wyjaśnienie skąd wziąć wiedzę o wsparciu/braku SLAT i tutaj akurat udało mi się nic nie namieszać.

Faktycznie zwróciłem Grześkowi uwagę na to, że SLAT jest wymagany wcale NIE przy Windows Server 2012 (jak to można by się domyślać na pierwsze logiczne przemyślenie), ale właśnie przy Windows 8. To faktycznie dość nietypowe, żeby coś tego typu było potrzebne w klienckim systemie a nie serwerowym.

Dlaczego Windows 8 potrzebuje SLAT?

imageCały ten post spowodowany został dwoma rzeczami. Po pierwsze przy instalacji Windows 8 na moim produkcyjnym komputerze (kilka dni temu) gdy tylko chciałem włączyć Client Hyper-V okazało się, że mój komputer odpowiedział mi to co widać po prawej, czyli że mój Dell E4300 nie posiada w swoim procesorze SLAT 🙁

Podzieliłem się tą tragedią 😉 na Facebooku i w komentarzach pojawiły się małe teorie spiskowe, że ten SLAT w wersji klienckiej to jest tam zapewne z jakiś nietypowych powodów. Obiecałem, że wyjaśnię w czym rzecz…

No to do rzeczy – najpierw dwa ważne punkty raz jeszcze:

  • Windows 8 Client Hyper-V wymaga SLAT. Nie ma żadnej sztuczki (np. w rejestrze) aby to obejść
  • Windows Server 2012 Hyper-V nie wymaga SLAT. Aczkolwiek jest bardzo wskazane, aby był on w maszynie serwerowej bo zwiększa to jej wydajność. Jest też jeden scenariusz, gdzie SLAT w serwerze jest wymagany – to wtedy gdy chcecie używać RemoteFX! Dlaczego? To właśnie jest mocno powiązane z wymogiem SLAT w kliencie – ale o tym na koniec.

A teraz trochę dłuższe wyjaśnienie, ale od podstaw.

Jak być może kojarzycie – gdy włączamy Hyper-V (bez względu czy w kliencie czy serwerze) system hosta robi ciekawa “sztuczkę” – przenosi się do maszyny wirtualnej, która od tej pory jest tzw. parent partition. Jest to specjalna partycja, która ma bezpośredni dostęp do fizycznego sprzętu, ale nadal mimo wszystko np. CPU jest zwirtualizowane i zarządzane przez hypervisor.

I o ile sama architektura Hyper-V w wersji klienckiej i serwerowej jest z grubsza ta sama (różnice opisywałem we wspomnianym wcześniej poście), o tyle już tzw. “use cases” są inne – czyli do czego innego jest przewidywane Hyper-V z wersji klienckiej i do czego innego w serwerowej.

Do czego używamy Hyper-V?

I teraz poniekąd odpowiedź na pytanie wyżej + pewne stwierdzenie Tomka z wspomnianego wcześniej wątku na Facebooku:

(…) jak ostatnio czytałem odpowiedz w temacie klienta Hyper-V na client OS to usłyszałem że jestem MCS consultant i w ogóle dziwny i nikt poza MCS consultant Hyper-V na client OS nie potrzebuje. To teraz z chęcią dowiem się do czego go się używa 🙂 i po co jest potrzebny :). (…)

Otóż faktycznie Client Hyper-V zostało pomyślane jako funkcjonalność dla dwóch grup: specjalistów IT i programistów. Ci pierwsi mogą sprawdzać nowe systemy bez bawienia się w serwer dedykowany do tego, mogą pokazywać systemy innym osobom (np. prezesom), mogą przeprowadzać analizy systemów serwerowych bez ich naruszania (bo maszyny wirtualne są identyczne w wersji serwerowej i klienckiej). Ci drudzy mogą testować stworzone przez nich oprogramowanie na różnych systemach przy różnych konfiguracjach.

I teraz te dwie grupy osób, swoich komputerów będą używać na co dzień wcale nie jako sprzęt, na którym będzie działała non stop wirtualizacja i nie będzie to jedyny/kluczowy element działania tych komputerów. W międzyczasie Ci ludzie będą oczekiwali od komputera maksymalnej wydajności (np. przy oglądaniu video czy słuchaniu muzyki). I w tej sytuacji bardzo ważna jest wydajność partycji parent w kontekście operacji graficznych i nie tylko.

Pozwolę sobie teraz (żeby nic nie przekręcić) zacytować dokładne wyjaśnienie z grupy produktowej:

While running Hyper-V in conjunction with WDDM graphics drivers, performance of the host machine is likely to suffer.  This is due to the interaction between the WDDM drivers, which use non-cached and write-combined memory to increase performance, and the Hyper-V hypervisor, which needs to manage and maintain a Translation Lookaside Buffer (TLB) which describes what parts of physical memory are allocated to virtual machines.  This interaction can cause almost constant flushing and rebuilding of the TLB, which dramatically impacts system performance.

I teraz zwróćcie uwagę na ostatnie określenie “almost constant flushing and rebuilding of the TLB“. To ciągłe czyszczenie i przebudowywanie TLB jest mocno obciążające i dlatego wymaga wsparcia sprzętowego. I dlatego podjęta została decyzja o wymogu posiadania SLAT w kliencie.

Natomiast jeśli chodzi o Hyper-V w serwerze, to najlepszą praktyką jest oczywiście ograniczenie czegokolwiek w partycji parent. Tam nie powinien (tak mówią wskazówki) działać żaden soft – conajwyżej agenci do zarządzania. Dlatego tam SLAT nie jest wymagany, aczkolwiek mimo wszystko wskazany (zawsze to trochę lepsza wydajność).

I tak jak wspomniałem jedyna opcja gdzie SLAT jest wymagany w serwerze – to kiedy uruchomicie RemoteFX. Ale teraz chyba już nie muszę tłumaczyć dlaczego akurat w tym wypadku to jest wymagane…

I generalnie raz jeszcze się odniosę do posta Grześka, który napisał:

(…) za parę lat wszyscy podejdziemy do tego tak, jak dzisiaj podchodzimy do wymagania x64 dla serwerów. Po prostu tak jest i każdy o tym pamięta. (…)

W 100% się z nim zgadzam. Na razie może się to wydawać egzotyczne, że wymagany jest SLAT i że to tylko przeszkoda. Ale dosyć szybko zapomnimy o tym, bo sprzęt będzie miał to na pokładzie prawie zawsze…

Mam nadzieję, że mój post rozjaśnił trochę na temat wymagań SLAT w klienckiej wersji Hyper-V 🙂 I niniejszym chciałbym Wam życzyć miłego długiego weekendu, a kibicom pełnego wrażeń otwarcia EURO 2012!

Aktualizacja (2013.01.25):
Znalazłem dosyć ciekawy post pogłębiający ten temat – zapraszam do przeczytania: Understanding High-End Video Performance Issues with Hyper-V

Comments (8)

  1. @Przemek: No niestety ja na moim Dell E4300 mam podobnie :/ Takie życie…

  2. @Zdzich: Virtual PC to naprawdę stara technologia 🙂 Ona nie wymaga SLAT, bo w czasach kiedy Virtual PC powstał chyba jeszcze nikt nie wiedział co to SLAT (a przynajmniej tak mi się wydaje).

  3. Zdzich says:

    A co z Virtual PC?

  4. Jak zweryfikować SLAT?

    Intel calls their SLAT technology EPT (Extended Page Table) . This technology was introduced in the Nehalem microarchitecture found in certain Core i7, Core i5, and Core i3 processors.

    AMD, beginning with their third generation Opteron processors (code name Barcelona) support SLAT through their Rapid Virtualization Indexing (RVI) technology.

    Dla AMD tym samym narzędziem się sprawdza co dla Intela – coreinfo – jeśli przy "NP" albo "NPT" jest gwiazdka – to "Nested Pages" [Tables] czyli RVI (w nazewnictwie AMD) czyli SLAT (po Microsoftowemu) jest włączone. Dla Intela to EPT.

  5. @Robert: Te wyjaśnienie nie pochodzą od osób z marketingu – to info bezpośrednio od osób odpowiedzialnych za techniczne aspekty i faktyczne budowanie tego rozwiązania. Więc tak czy inaczej powód zapewne był dokładnie taki jak opisują.

  6. Robert says:

    Hmmmm a czy nie jest tak jak z XPMode jakis czas temu. Najpierw bylo potrzebne wsparcie sprzetowe a pozniej LOL czas pokazal ze niekoneicznie.

    Teraz jak procesor dziala na 5-10% obciazenia przy 2 maszynach VMs to zaslanianie sie ze moze dzialac cos wolniej to sorki nie ma sensu. Marketingowy belkot jedynie i strzal w kolano kolejny raz

  7. Piotr1 says:

    @Mariusz

    Osobiście widziałem wpisy na blogach Microsoftu od "technicznych" z wyjaśnieniem dlaczego nie da się przenieść pliku hibfile.sys na partycję inną niż startowa… o zgrozo, nie trzymające się logiki i oczywiście fałszywe. Podobnie z profilami użytkowników – NTFS junctions i mogą być na dowolnej partycji.

    Technika (a więc rozsądek) tu nie ma znaczenia – po prostu, chodzi o siłową migrację użytkowników na nowszy sprzęt i tyle. Od czasu PowerToys dla Win95 – co dobitnie pokazał rozwój projektu SysInternals – wszystkie co ciekawsze funkcje ostatni raz pojawiają się na 2 edycje przed RTM.

  8. przemek says:

    Czyli muszę zmienić laptopa na takiego z procesorem i3, i5, albo i7 bo mój Core 2 Duo p8700 mimo że obsługuje Intel® Virtualization Technology (VT-x) to nie obsługuje Intel® Hyper-Threading Technology i wirtualizacja już nie działa. Po prostu super…

Skip to main content