De recente introductie van “memory compression” in VMware vSphere 4.1 voegt opnieuw een conversie-laag toe aan het geheugen voor virtuele machines. Vroeger – toen alles nog simpel was en ook VMware nog niet bestond – had je “fysiek geheugen” en “virtueel geheugen”. Operating systemen zorgden er voor dat applicaties een groot aaneensluitend stuk geheugen te zien kregen, terwijl dit zich in werkelijkheid verspreid in het fysieke geheugen – en zelfs op de harde schijf – bevond.
De introductie van hypervisors voegde een extra laag toe aan dit concept. Het operating systeem was niet langer verantwoordelijk voor het toekennen van fysiek geheugen aan applicaties. Deze rol werd overgenomen door de hypervisor die geheugen toekende aan operating systemen (en die op hun beurt weer aan applicaties).
Deze extra laag zorgde uiteraard voor wat performance verlies. Dit werd weer gecompenseerd met technieken als transparent page sharing, ballooning en hypervisor swapping. VMware heeft nu met vSphere 4.1 aan dat rijtje memory compression toegevoegd. Om alles in de juiste context te kunnen blijven plaatsen heeft het bedrijf een uiterst leerzame white paper gepubliceerd. Daarin wordt geheugen – overigens al sinds de introductie van hypervisors – onderverdeeld in drie soorten:
- Host physical memory: dit is het fysieke geheugen van de hardware zoals het zichtbaar is voor de hypervisor.
- Guest physical memory: dit is het geheugen zoals het zichtbaar is voor de guest operating systemen (die op hun beurt denken met fysiek geheugen te maken te hebben).
- Guest virtual memory: dit is het geheugen zoals het guest operating systeem dit presenteert aan haar applicaties (het “oude” virtuele geheugen dus).
Zoals gezegd is memory compression een nieuwe optimalisatie-techniek in het geheel. De white paper zegt daarover:
The idea of memory compression is very straightforward: if the swapped out pages can be compressed and stored in a compression cache located in the main memory, the next access to the page only causes a page decompression which can be an order of magnitude faster than the disk access. With memory compression, only a few uncompressible pages need to be swapped out if the compression cache is not full. This means the number of future synchronous swap-in operations will be reduced. Hence, it may improve application
performance significantly when the host is in heavy memory pressure.
Toegegeven, alhoewel “very straightforward” is dit geen gemakkelijke kost zo op het eerste gezicht. Wie echt het naadje van de kous wil weten zal dus toch de white paper (25 pagina’s) moeten downloaden!
Read Full Post »