A virtualização trouxe consigo uma grande revolução quando se trata de gerenciamento de recursos. A possibilidade de consolidar vários sistemas operacionais em uma lata, exige que o hypervisor coordene a alocação dos recursos físicos do host para as máquinas virtuais. O ESXi utiliza de várias técnicas para maximizar o desempenho do host e também economizar recursos em momento de contenção. Importante lembrar que o ESXi permite o overcommitment, processo que permite provisionar recursos à uma maquina virtual, mesmo que ultrapasse a capacidade física do host.
Um dos destaques do hypervisor da VMware é o gerenciamento de memória. Quando os recursos físicos do host estão escassos, o VMkernel sai à procura de oportunidades para recuperar um espaço de memória que foi alocado, mas que não está sendo utilizado pelas máquinas virtuais.
As técnicas utilizadas são: TPS (transparent page sharing), balloon driver (ou vmmemctl), memory compression e memory swapping.
Antes de falar sobre cada um deles, vamos entender como o ESXi sabe em qual situação ele deve usar cada técnica. O ESXi se baseia em uma métrica chamada “host memory state”, que é determinada pela quantidade de memória livre do host em um determinado momento.
E qual threshold que o ESXi utiliza para associar à cada estado de memória? O ESXi usa uma métrica própria chamada de “minFree“, que serve como referência de quando as técnicas de gerenciamento de memória precisam ser usadas. O cálculo é feito da seguinte forma:
Para os primeiros 28GB de memória do seu host o valor inicial do minFree será 899 MB + 1% sobre o restante de memória.
Por exemplo, vamos supor que seu host possua 64 GB de memória. O cálculo ficaria assim:
64 GB – 28 GB = 36 GB
899MB + 1% de 36GB = 899MB + 360MB = 1259 MB
Com o valor do minFree, é possível entender os thresholds:
- high state: há memória suficiente disponível
- clear state: de 64 a 100% do minFree
- soft state: entre 32 e 64% do minFree
- hard state: entre 16 e 32% do minFree
- low state: entre 0 e 16% do minFree
De acordo com o estado de memória de cada host, as seguintes técnicas de recuperação de memória são utilizadas:

Vamos entrar à fundo e falar sobre cada uma delas.
Continue lendo