Eelmisel nädalal liikus
blogidest läbi, et
Microsoft lisab järgmisesse Hyper-V uuendusse „memory over-commit“ e. mälu liigeraldamise funktsionaalsuse.
VMware on lubanud juba pikemat aega
ESXil jooksvatele virtuaalmasinatele eraldada rohkem mälu kui tegelikult füüsiliselt serveris saada. Siiani on Microsoft pidanud seda funktsionaalsust „ebaoluliseks“, kuid paistab, et mälu liigeraldamise puudumine on hakanud takistama
HyperV populaarsuse kasvu.
Miks liigeraldamist vaja on? Uue virtuaalmasina loomisel eraldatakse talle ikka rohkem mälu kui tegelikult igapäevaselt vaja on, sest puhverdamine kõvakettale on aeglane. Kui nüüd füüsilisele serverile paigaldada kümmekond virtuaalset masinat, võib lihtsalt niisama seisev põhimälu olla väärt kümneid tuhandeid kroone. Kui see vaba pind kokku koondada, võib sinna veel mõni virtuaalmasin ära mahtuda ning igaks juhuks vaba pind on jagatud kõigi virtuaalmasinate vahel. Mälu on alati vähe!
Lihtne kirjeldus mälu liigeraldamisest on järgneval joonisel, kuid tehnoloogiline realiseerimine ei ole üldse lihtne ja sellest ka tõenäoliselt Microsofti viivitused tehnoloogia lisamisel oma virtualiseerimistootele.
Kuidas VMware mälu liigeraldamist teeb? VMware kasutab mälu kokkuhoidmiseks kolme tehnoloogiat:
- Transparent Page Sharing – mälulehtede jagamine;
- Ballooning – täispuhumine;
- Hypervisor Swapping – hüperviisori poolt puhverdamine.
Mälu liigeraldamist kasutatakse operatsioonisüsteemides juba aastakümneid. Kui kiire kuid kallis füüsiline mälu otsa saab, hakatakse mälu sisu puhverdama kõvakettale. Kõvakettale kirjutamine ja sealt lugemine on aeglane ja pigem puhverdatakse sinna info, mida harva kasutatakse. Sellist puhverdamist suudaks teha kindlasti ka Microsofti HyperV, kuid hüperviisoril on keeruline otsustada, millised virtuaalmasina mälu leheküljed sisaldavad harva kasutatavat infot . Hüperviisor võib kogemata puhverdada operatsiooni baasprotsessid ja virtuaalmasin on peaaegu kasutuskõlbmatu. Seetõttu tuleks hüperviisori tasemel puhverdamist kindlasti vältida.
Mälulehtede jagamine on juba palju huvitavam teema. Enamik ettevõtteid on oma tarkvaraplatvormid standardiseerinud mingile kindlale Windowsi või Linuxi versioonile, et haldust lihtsustada. Kui nüüd füüsilisel serveril jookseb mitu sarnast virtuaalserverit, siis on virtuaalsete serverite lõikes mitu sama sisuga protsessi, mille mälutabeli lehed on identsed. Korduvaid mälutabeli lehti ühekordselt hoides on ruumi kokkuhoid märkimisväärne. Ühekordselt võib hoida ka tühje mälulehti (vaba mälu) ja nii võib süsteemidele eraldada summaarselt rohkem mälu kui tegelikult olemas on. Siiski peaks füüsiliselt kindlasti olema mälu, mis tegelikult kasutusele läheb, sest puhverdamine on ka virtuaalkeskkonnas aeglane.
Kui nüüd peaks siiski juhtuma, et mitu süsteemi tahavad korraga saada palju mälu ja tegelikult füüsilist mälu nii palju ei ole, läheb käiku mälu täispuhumine. Nagu juba eespool kirjeldatud, ei tohiks puhverdamise osas otsuseid langetada hüperviisor, sest tema jaoks on iga mäluleht sarnane ja nii võivad puhvrisse sattuda kriitilised andmed ja protsessid. Kui füüsilises serveris hakkab mälu väheks jääma, antakse sellest teada virtuaalmasinasse installeeritud VMware'i mäludraiverile. See draiver hakkab seejärel hõivama virtuaalmasina mälus pinda tühjade mälulehtega, mida hüperviisor saab ühekordselt säilitada. Virtuaalmasina operatsioonisüsteem on sunnitud teistele protsessidele teatama, et need peavad midagi puhvedama. Protsessid teevad ise valiku, millised andmed on kriitilised ja millised mitte ja puhverdamise mõju virtuaalmasina tööle on väiksem kui et puhverdamist teeks hüperviisor.
Mul hea meel, et Microsoft on lõpuks otsustanud mälu liigeraldamise HyperV-le lisada. Kahjuks ei ole selle funktsionaalsuse kohta Microsofti ametlikku teadet, vaid rohkem spekulatsioonid uue ServicePacki lisafunktsionaalsuse teemal. Selle vajaduse eitamine on sama kui kõvakettale puhverdamise vajaduse eitamine, sest serverites on alati mälu vähe ja iga kokku hoitud kroon teenib IT osakonnale juhtkonna ees plusspunkte. Olen kindel, et see funktsionaalsus HyperV tootesse saabub ja loodetavasti varem kui et hiljem.