Szukając w sieci dokumentów na temat optymalizacji Hyper-V trafiłem na dokument na MSDN. Dokument ten dotyczy ten poprzedniej wersji Hyper-V. Zainteresował mnie ten akapit, mówiący o zużyciu pamięci:

300 MB for the Hypervisor
plus 32 MB for the first GB of RAM allocated to each virtual machine
plus another 8 MB for every additional GB of RAM allocated to each virtual machine
plus 512 MB for the host operating system running on the root partition

Czyli w przypadku maszyny z przydzielonym 2GB ramu hypervisor zużyje:

  • 300 MB na hypervisor
  • 2048 MB na maszynę wirtualną
  • 40 MB na obsługę maszyny wirtualnej(32 MB na pierwszy GB ramu i 8 MB na kolejny)

Postanowiłem sprawdzić jak to się ma do aktualnej wersji Hyper-V przy użyciu narzędzia RAMMap.Testy odbyły się na serwerze bl460c G7 z 32GB ramu na pokładzie. Zainstalowany system to Windows Server 2008 R2 SP1 Enterprise. Poniżej zrzut okna RAMMapa przed instalacją Hyper-V: Przed instalacją Hyper-V Po instalacji Hyper-V:

Hyper-V po instalacji

Porównując powyższe wartości zużycia pamięci widzimy, że Drive Locked zwiększył wartość w przybliżeniu o 202M. Jest to wartość użyta przez hypervisor. Zrzut ekranu po uruchomieniu maszyny wirtualnej z przydzielonymi 2GB ramu: Uruchomienie VM

Tutaj widzimy, że wartość Driver Locked zwiększyła się w przybliżeniu o 2065MB ramu, czyli 2048MB przydzielone dla maszyny i 17MB na obsługę maszyny. Idą dalej sprawdziłem zużycie pamięci dla maszyn z 1GB ,4GB ,8GB, 16GB ramu.

Ilość RAMU dla VM Ilość pamięci zużytej na obsługę maszyny
1GB 15MB
2GB 17MB
4GB 21MB
8GB 29MB
16GB 45MB

Analizując powyższe dane dla wersji Hyepr-V R2 zużycie pamięci wychodzi następująco:

  • Hypervisor około 200MB
  • Pierwsze 1GB ramu dla maszyny wirtualnej zużywa 15MB
  • Każdy kolejny gigabajt ramu zużywa 2MB.