Pri administrácii hosťujúcich virtuálnych počítačov bežiacich na virtualizačných hostiteľoch (či už ide o VMWare ESXi alebo Hyper-V) sa pri analýze problémov s výkonnosťou často stretávame so situáciami, keď je množstvo dostupnej pamäte OS oveľa menšie, ako vidí operačný systém (pridelené). Napríklad virtuálnemu stroju je pridelených 8 GB pamäte, správca úloh ukazuje zadarmo 1 GB pamäte, zatiaľ čo celková spotreba pamäte všetkých spustených procesov nepresahuje 3 GB. Kam smerovali zvyšné 4 GB??
Dôvodom tohto správania je zvyčajne použitie funkcie overcommit pamäte v hypervízore.
Pamäť je nadmerná (Neviem definíciu v ruštine, nech sa vyskytne nadmerná pamäť) Toto je funkcia hypervisora, ktorá vám umožňuje prideliť viac pamäte virtuálnym počítačom, ako je na fyzickom hostiteľovi, ale bez záruky, že v určitom čase bude možné prideliť všetku požadovanú pamäť. Overcommit vám spravidla umožňuje zvýšiť hustotu virtuálnych počítačov na hostiteľovi vzhľadom na to, že pamäť bude medzi nimi dynamicky prerozdeľovaná v závislosti od aktuálneho zaťaženia (prostriedky nevyložených / nečinných virtuálnych počítačov možno prerozdeliť medzi viac načítaných).
V VMWare je jedným z mechanizmov na implementáciu nadmernej kapacity pamäte Balónovanie pamäte (vytláčanie pamäte alebo, ak chcete, podvádzanie). V Hyper-V je podobná funkčnosť implementovaná funkciou Dynamická pamäť.
poznámka. Mimochodom, VMWare aj Hyper-V používajú kompresiu pamäte široko a pomerne efektívne, aby šetrili pamäť a implementovali nadmernú technológiu..V VMWare je lopta implementovaná prostredníctvom ovládača vmmemctl.sys (zahrnuté v VMware Tools), ktoré v prípade potreby dokážu zachytiť fyzickú pamäť nafúknutím fiktívneho guľového procesu v pamäti (balón). Obsadená pamäť sa tak stáva neprístupným pre aplikácie a hypervízor môže redistribuovať uvoľnenú pamäť medzi ostatnými VM. Hyper-V Dynamic memory využíva ovládač dmvsc.sys zo súboru integračných služieb (komponent dynamickej pamäte VSC). Nastavenia nadprípustnosti ovláda správca hypervízora..
Ale ako zistiť v rámci VM, že má skutočne k dispozícii menej fyzickej pamäte, ako je tá, ktorú vidí operačný systém?
Zvážte, ako určiť prítomnosť a veľkosť ovládača balóna v hosťujúcom OS Windows. Analyzujeme teda túto situáciu:
VM s hosťujúcim Windows Server 2012 R2 pridelili 8 GB pamäte RAM. Správca úloh ukazuje, že pamäť sa používa na 93% (obsadené je 7,4 GB pamäte). Ak však sčítate množstvo pamäte, ktorú používajú všetky spustené procesy, môžete dospieť k neočakávanému záveru - skutočne sa použije iba 2,5 GB. Kam smerovalo 5 GB pamäte? Správca úloh ani nástroj Sledovanie zdrojov neodpovedia na túto otázku..Aby ste pochopili, čo sa stane s pamäťou, musíte použiť obslužný program RamMap Mark Rusinovich (v jednom z predchádzajúcich prípadov som ukázal, ako pomocou tohto nástroja diagnostikovať problém so systémovou vyrovnávacou pamäťou systému súborov). Prevezmite obslužný program z webovej lokality spoločnosti Microsoft (https://technet.microsoft.com/en-us/library/ff700229.aspx) a spustite ho s právami správcu. Potom na karte Použitie sa počíta vidíme, že väčšinu pamäte (5,4 GB) používa objekt Vodič je zamknutý.
Toto je pamäť, ktorú hypervízor „zjedol“ a redistribuoval do iných virtuálnych strojov prostredníctvom ovládača balóna v hosťujúcom OS. tj na hostiteľovi hypervisora nie je dostatok pamäte alebo administrátor hypervisora násilne „zabil“ prostriedky pre tento VM.
Aktuálne rozloženie pamäte vo virtuálnych počítačoch na Hyper-V môžu byť dané jednotlivými počítadlami výkonu v nástroji Sledovanie výkonu:
- Dynamická pamäť Hyper-V -> Viditeľná pamäť hosťa
- Dynamická pamäť Hyper-V -> Fyzická pamäť
Ak chcete toto správanie zakázať, musí správca hypervisora vypnúť možnosť v nastaveniach Hyper-V VM Povoliť dynamickú poznámkuy (alebo zvýšiť minimálnu hodnotu rezervácie).
Ak používate hostiteľa VMWare ESXi, môžete použiť nastavenia pridelenia prostriedkov (Nastavenia zdrojov) vyhradiť viac pamäte pre toto zariadenie alebo okamžite rezervovať celú pamäť - rezervovať celú hosťovskú pamäť (všetky zamknuté).