Pri upravljanju gostujočih VM-jev, ki delujejo na virtualizacijskih gostiteljih (naj bo to VMWare ESXi ali Hyper-V), se pri analizi težav z zmogljivostjo pogosto srečujejo situacije, ko je količina razpoložljivega pomnilnika OS precej manjša, kot vidi (dodeljeno) v operacijskem sistemu. Na primer, navideznemu stroju je dodeljenih 8 GB pomnilnika, upravitelj opravil prikazuje brezplačno 1 GB pomnilnika, medtem ko skupna poraba pomnilnika vseh tekočih procesov ne presega 3 GB. Kam so odšli preostali 4 GB??
Običajno je razlog za to vedenje uporaba pomnilniške funkcije za prekomerno oddajanje v hipervizorju.
Spomin preseže (Ne razumem definicije v ruščini, naj bo prekomerni prenos pomnilnika) to je značilnost hipervizorja, ki vam omogoča, da virtualnim strojem dodelite več pomnilnika, kot je na fizičnem gostitelju, vendar brez zagotovila, da lahko ob določenem času dodelite ves zahtevani pomnilnik. Praviloma vam overcommit omogoča povečanje gostote virtualnih strojev na gostitelju zaradi dejstva, da se bo pomnilnik dinamično prerazporedil med njimi, odvisno od trenutne obremenitve (vire neobremenjenih / nedejavnih VM-jev lahko prerazporedimo med bolj naložene)
V VMWare je eden od mehanizmov za izvajanje prekomernega delovanja pomnilnika Baloniranje spomina (iztisnitev spomina ali, če želite, potegav). V Hyper-V funkcijo izvaja podobna funkcija Dinamični pomnilnik.
Opomba. Mimogrede, tako VMWare kot Hyper-V uporabljata stiskanje pomnilnika široko in dokaj učinkovito, da prihranite pomnilnik in uporabite tehnologijo overcommit..V VMWare se žoga izvaja prek gonilnika vmmemctl.sys (vključeno v orodja VMware), ki lahko po potrebi zajamejo fizični pomnilnik tako, da v spomin napihnejo fiktivni postopek z žogo (balon). Tako zasedeni pomnilnik postane nedosegljiv aplikacijam, hipervizor pa lahko razdeli osvobojen pomnilnik med druge VM. Hyper-V Dynamic pomnilnik uporablja gonilnik dmvsc.sys iz nabora integracijskih storitev (komponenta dinamičnega pomnilnika VSC). Nastavitve overcommit-a nadzira skrbnik hipervizorja..
Kako pa znotraj VM-a ugotoviti, da ima na voljo manj fizičnega pomnilnika kot tisti, ki ga vidi operacijski sistem?
Razmislite, kako določiti prisotnost in velikost gonilnika balona v gostujoči operacijski sistem Windows. Torej bomo analizirali naslednje stanje:
VM-ji z gostim Windows Server 2012 R2 so namenili 8 GB RAM-a. Upravitelj opravil kaže, da se pomnilnik porabi pri 93% (zasedenih je 7,4 GB pomnilnika). Če pa seštejete količino pomnilnika, ki ga uporabljajo vsi tekoči procesi, lahko pridete do nepričakovanega zaključka - dejansko je porabljenih le 2,5 GB. Kam je šlo 5 GB pomnilnika? Niti upravitelj opravil niti nadzornik virov ne bo odgovoril na to vprašanje..Če želite razumeti, kaj se zgodi s spominom, morate uporabiti pripomoček Rammap Markom Rusinovičem (v enem od prejšnjih primerov sem pokazal, kako s pomočjo tega pripomočka diagnosticirati težavo s sistemskim predpomnilnikom datotečnega sistema). Prenesite pripomoček s Microsoftovega spletnega mesta (https://technet.microsoft.com/en-us/library/ff700229.aspx) in ga zaženite s skrbniškimi pravicami. Po tem na zavihku Uporabite štetje vidimo, da objekt uporablja večino pomnilnika (5,4 GB) Voznik zaklenjen.
To je spomin, ki ga je hipervizor "jedel" in ga prek gonilnika balonov v gostujoči OS "razdelil" na druge virtualne stroje. I.e. na gostitelja hipervizorja ali na skrbnika hipervizorja prisilno "ubiti" vire za ta VM ni dovolj pomnilnika.
Trenutno postavitev pomnilnika v VM-jih na Hyper-V lahko dajo posamezni števci zmogljivosti v Monitorju učinkovitosti:
- Hyper-V dinamični pomnilnik -> Vidni pomnilnik gostov
- Hyper-V dinamični pomnilnik -> fizični pomnilnik
Če želite to vedenje onemogočiti, mora skrbnik hipervizorja onemogočiti možnost v nastavitvah Hyper-V VM Omogoči dinamični pomnilniky (ali povečajte najnižjo vrednost rezervacije).
Če uporabljate gostitelja VMWare ESXi, lahko uporabite nastavitve razporejanja virov (Nastavitve virov) rezervirajte več pomnilnika za ta stroj ali takoj rezervirajte ves pomnilnik - Rezervirajte ves spomin gostov (Vse zaklenjeno).