Hyper-V Dynamic Memory

Jedna z nowosci dostepnych w SP1 do Windows 2008 R2 jest Hyper-V Dynamic Memory. Ale o co chodzi tak naprawde?

W tej chwili, podejscie Hyper-V do RAMu mozna ujac nastepujaco: RAM hosta dzielony jest przez administratora na kawalki i kazda maszyna wirtualna dostaje na wylacznosc swój obszar. Maszyna sie nie miesci – to jej problem. Zajmuje tylko 10% przeznaczonej dla niej pamieci? Trudno, 90% nie jest uzywane, ale jest gotowe na zapas.

O ile w przypadku serwerów, nie jest to czestym problemem (madry administrator jest w stanie racjonalnie przydzielic pamiec), o tyle juz w przypadku stacji VDI, dynamiczne zarzadzanie pamiecia robi sie dosc istotne. Dac wszystkim klientom po 2GB, liczac ze nie zabraknie i godzac sie z tym, ze wiekszosc jest niewykorzystana? Sprawdzac, kto wymaga najwiecej (Excel potrafi calkiem duzo pamieci zjesc) i przydzielac dostepny nadmiar przy najblizszym restarcie? Ale co, jezeli ten arkusz uzywany jest tylko pod koniec tygodnia?

A gdyby przydzielac RAM tak jak przydzielany jest procesor? Która maszyna wirtualna poprosi – ta dostanie. A jak przestanie potrzebowac, to bedzie dla innych.

I tutaj wlasnie zaczyna sie Hyper-V Dynamic Memory. Dla kazdej maszyny wirtualnej, okreslic mozna ile RAMu ma miec minimalnie (z taka iloscia maszyna wystartuje) i ile maksymalnie (Hyper-V nie da wiecej).

 hvdm3

I teraz, jezeli maszyna zacznie potrzebowac pamiec – Hyper-V ja chetnie da. Od strony VM wyglada to dosc ciekawie, bo ilosc pamieci widziana przez system rosnie! Gdy pamiec przestanie byc potrzebna, Hyper-V ja odbierze i moze dac innej maszynie, która akurat jest w potrzebie. Wprawdzie na maszynie wirtualnej ilosc widzianej pamieci nie spadnie, ale nie ma to wiekszego znaczenia. Gdy bedzie znowu potrzebna, Hyper-V czuwa i przydzieli ile trzeba. Task Manager wprawdzie od tego troche glupieje, ale jezeli dla kogos jest to najwazniejsza aplikacja w systemie – nie musi przeciez uzywac Dynamic Memory.

W menedzerze Hyper-V wyglada to tak, ze wyswietlana jest ilosc pamieci, która w danej chwili ma maszyna wirtualna oraz ilosc "nadmiaru", RAMu przydzielonego w stosunku do RAMu faktycznie potrzebnego stacji. Jezeli stacja potrzebuje wiecej niz ma – trudno. W takiej sytuacji wyswietlany jest ujemny nadmiar.

hvdm1

Warto wiedziec, ze w Dynamic Memory nie ma zadnego "overbookingu". Nie da sie maszynom dac wiecej pamieci niz faktycznie jest w hoscie i kazda strona pamieci RAM, przydzielana jest tylko jednej maszynie wirtualnej równoczesnie. Zyskiem jest jednak to, ze dana porcja RAMu raz moze nalezec do maszyny X a raz do maszyny Y, stosownie do biezacych potrzeb tych maszyn.

Calosc oczywiscie wymaga scislej wspólpracy pomiedzy systemem maszyny wirtualnej a Hyper-V. Nie jest to jednak problem dla Integration Services i swietnie dziala z Windows 2003, Windows 2008, Windows 2008R2 i wyzszymi edycjami Windows 7. Wszystko w wersjach x86 i x64.

Do ogólnego obrazu rozwiazania, warto dorzucic informacje, ze:

  • Mozna przydzielac pamiec statycznie – po staremu
  • Mozna (równiez dla pracujacej maszyny!) okreslic jak duzy "zapas" pamieci Hyper-V powinien utrzymywac na maszynie wirtualnej
  • Mozna (równiez dla pracujacej maszyny!) okreslic jak wazna jest dana maszyna i czy w razie problemów z dostepna pamiecia to ona dostanie RAM, czy jakas inna

Co wazne, calosc nie powoduje spowolnienia pracy uzytkownika. Nawet maszyna totalnie ogolocona z pamieci, bardzo sprawnie reaguje na zwiekszone zapotrzebowanie i uzytkownik nawet nie zauwazy, ze pamiec, której akurat nie uzywa, wykorzystywana jest przez kogos, kto akurat ma taka potrzebe.

Nic tylko uzywac. Wirtualizacja, która od dawna sluzy do zwiekszenia stopnia efektywnosci wykorzystania sprzetu, robi to jeszcze lepiej.

Autor: Grzegorz Tworek [MVP]