Memória Virtual no Hyper-V

Fala galera, 100%?

Falaremos hoje sobre como o recurso de memória virtual do Hyper-V funciona. É de conhecimento geral que a virtualização tem como beneficio (um dos principais, diria) o melhor uso do hardware disponível de um host como CPU, Disco e memória. O último deles, ao meu ver, é o mais desperdiçado e também escasso na maior parte dos ambientes. Tendo com base as premissas acima, a partir do Service Pack 1 do Windows Server 2008 R2 a Microsoft introduziu o recurso de Memoria Dinâmica (Dynamic Memory).

Como o nome propõe esse recurso traz flexibilidade e dinamismo em relação ao uso e gerenciamento da memória disponível. Um exemplo simples: Temos uma aplicação de pequeno porte alocada em uma maquina virtual com 8GB de memória, sabemos que o consumo de memória chegará ao teto em dias pontuais, por poucas horas, no decorrer do uso a maquina consumirá, no máximo 2GB. Esse exemplo ilustra que, em teoria, 6GB do host estão ociosos em mais de 90% do tempo. A utilização de Memória Dinâmica impede que esse tipo de situação ocorra e garante um uso mais inteligente do recurso disponível. Devemos entender alguns conceitos antes de iniciar as configurações.

Para habilitar e ter acesso as configurações de memória dinâmica basta clicar com o botão direito do mouse sobre a VM e selecionar “Settings” (configurações). É importante lembrar que essa opção só pode ser habilitada quando a VM estiver desligada. Vamos as opções de configuração:

Vm_DynamicMemory

Uma questão que sempre surge é: Qual sentido em ter valores diferentes entre memória minima e memória de startup? Analisando com mais cuidado chegará a conclusão de que a inicialização de um sistema exige mais recursos do que um S.O ocioso, concorda? Ao realizar o boot, o sistema operacional carregará uma serie de serviços e recursos. Após a inicialização grande parte destes serviços fica ocioso, apenas aguardando uma chamada de sistema para ser executado. Entendido?

E como tudo isso funciona junto, na pratica?

De forma simplificada, tomaremos como base a imagem abaixo:
VirtualMemory

Nossa maquina virtual possui a seguinte configuração: Startup: 1GB; Maximum RAM: 10Gb; Minimum RAM: 256; Buffer: 20%. Ao iniciar, podemos checar no gerenciador de tarefas do windows e teremos o valor de 1GB de memória, pois esse foi o valor definido para inicialização. Após algum tempo de uso o consumo de memória aumentou. O Hyper-V identificou tal mudança e alocou mais 2GB para a VM, passando então a ter 3GB disponível e visível via Gerenciador de Tarefas.

A medida que o S.O for ficando ocioso a memória alocada começará a ser devolvida ao host (removida da maquina virtual). Como não é possível remover memória de uma maquina em funcionamento (virtual ou física), um processo chamado “Ballooning” passa a ocorrer. A memória que for desalocada da VM é “substituida” por “balão” (sim, esse é o termo utilizado) que iludi o sistemas operacional, o fazendo acreditar que existe o recurso. Esse mascaramento pode ser observado no Gerenciador de Tarefas, que continuará a exibir 3GB de memória disponível. Esse valor será atualizado assim que a maquina for reinicializada.

E se a demanda por memória aumentar novamente? O balão passará, aos poucos,  a ser substituído pelo recurso de fato (chamamos esse processo de balloonig deflate).

A medida que a maquina virtual fica ociosa seu necessidade de memória RAM é reduzida. Seguindo a lógica o Hyper-V checará a configuração de Minimum RAM e passará a devolver o recurso para o host, novamente o processo de ballooning ocorrendo. Suponhamos que o valor da RAM minima seja de 256MB, via console de gerenciamento do Hyper-V teremos o valor de 308MB, referente a 256 de memoria minima + 20% de buffer.

Levando em conta o exemplo acima, nossa VM sofreu as seguintes aletarções:

  1. Iniciou com 1GB de RAM
  2. Aumento para 3GB de RAM
  3. Reduziu seu consumo (não foi citado, mas vamos dizer que caiu para 2GB de RAM) – Ballooning
  4. Reduziu para 308 MB – Ballooning

Assim finalizamos nossa introdução a Memória Virtual no Hyper-V. Espero que tenha sido útil!
Grande abraço

Share

    Deixe uma resposta

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    © 2019 All Rights Reserved. Cooperati.