Quando o assunto é gerenciamento de recursos Hyper-V, é melhor estar seguro sobre a utilização em seu próprio ambiente. Existem softwares específicos de monitoramento, que permitem que você tenha uma visão geral do consumo e possa até mesmo fazer planejamento de capacidade para o futuro, mas algumas vezes isto pode não ser suficiente. Por outro lado, existem recursos embutidos no Hyper-V que permitem que você se prepare para o futuro desde o momento da configuração. A memória dinâmica do Hyper-V é uma destas tecnologias, e você encontrará abaixo informações sobre como você pode gerenciar melhor suas VMs Hyper-V com ela.
Introdução à memória dinâmica do Hyper-V
A memória dinâmica é um recurso do Microsoft Hyper-V que foi introduzido no Windows Server 2008 R2 SP1 e expandido no Windows Server 2012. Esta tecnologia permite ao hipervisor gerenciar o consumo de RAM por VM host de forma flexível, se possível. Por exemplo, o hipervisor pode adicionar mais RAM a uma VM dinamicamente quando o SO guest precisar dela, e também recuperar o excesso de RAM quando uma VM estiver ociosa.
Muito embora RAM não seja um grande problema hoje em dia, e o preço dos módulos de RAM estejam caindo ao longo dos anos, algumas vezes esta tecnologia pode ser muito útil. E se você estiver numa situação de orçamento limitado, ou usando servidores antigos que não podem ser atualizados facilmente e que não se pode adicionar RAM? Adicionalmente esta tecnologia funciona perfeitamente com um grande número de VMs, mantendo a sobreutilização sob controle, permitindo a você não se preocupar com o desperdício de recursos e fornecendo melhor visibilidade do seu sistema. Ela pode ser especialmente útil quando você tem várias VMs ociosas ou com baixa utilização (por exemplo: em ambientes VDI).
Explicações sobre as configurações de memória dinâmica do Hyper-V
Vamos falar sobre as configurações de memória dinâmica do Hyper-V e ver como poderíamos configurá-la.
Todos estes parâmetros de memória dinâmica devem ser configurados em VM Settings no Hyper-V Manager. Tenha em mente que para habilitar ou desabilitar a memória dinâmica a VM precisa estar desligada. Então quando você criar uma VM ou editar uma existente, você selecionará a quantidade de RAM a ser associada à VM, e existem duas opções: Associar uma quantidade definida (estática) ou habilitar a memória dinâmica e deixar que o hipervisor faça os ajustes enquanto a VM estiver em operação. Com a opção estática, a quantidade de RAM permanecerá a mesma independentemente da VM estar sendo inicializada, estar fazendo uma atividade ou estar se desligando. Já com a memória dinâmica, a quantidade de RAM será ajustada de acordo com a atividade da VM.
Figura 1. Parâmetros de Memória Dinâmica no Hyper-V Manager
Quando você escolhe configurar a memória dinâmica, existem alguns valores que você precisa configurar.
RAM de inicialização (Startup RAM). A quantidade de RAM atribuída à VM durante o processo de inicialização. Este valor pode ser o mesmo de “minimum RAM” (mínimo de RAM), ou mais – até o valor de “maximum RAM” (máximo de RAM). O valor de inicialização de RAM não pode ser configurado quando a VM estiver ligada.
Uma vez que o processo de inicialização da VM estiver completado e o hipervisor iniciado, ele tentará usar a quantidade de RAM definida como a quantidade mínima de RAM.
Mínimo de RAM (Minimum RAM). A quantidade mínima de RAM que o host deve tentar atribuir à uma VM quando ela for inicializada. Quando múltiplas VMs estiverem solicitando memória, o host Hyper-V pode realocar RAM de outras VMs até que o valor mínimo definido seja atingido.
Este parâmetro só pode ser reduzido (para baixo até 32 MB em porções de 2 MB), mas não aumentado enquanto a VM estiver ligada. Tenha muito cuidado com isto, pois as alterações ocorrem imediatamente e você terá que desligar a VM caso configure o parâmetro muito baixo.
Máximo de RAM (Maximum RAM). A quantidade máxima de RAM que o host fornecerá para a VM.
Só é possível aumentar este parâmetro, não reduzir, enquanto a VM estiver ligada. Existe um limite máximo de 1TB que você pode alocar por uma limitação do Hyper-V no Windows Server 2012 R2.
Todos os valores acima só podem ser configurados com números ímpares em incrementos de 2MB.
Buffer de memória (Memory buffer). O percentual de memória que o Hyper-V deve alocar para a VM como buffer.
O valor pode ser configurado entre 5-200% com 20% definido por padrão.
O host Hyper-V usa a demanda corrente da VM por memória para definir quanta memória ele deve reservar para o buffer. Por exemplo, para uma VM com consumo corrente de 1TB, o Hyper-V está mantendo um buffer de 20% e alocando 1,2TB de RAM para a VM.
Peso da memória (Memory weight). A prioridade que você está definindo para esta VM em comparação com outras VMs rodando no mesmo host Hyper-V.
Figura 2. Parâmetros de Memória Dinâmica para uma VM ligada
Tenha em mente que os ajustes de memória são rápidos, mas bem conservadores. Isso significa que um host não fornece todos os recursos de uma única vez, mesmo que ele possa fazer isso imediatamente. Ao invés disso, ele tentará manter as coisas de acordo com o consumo atual de RAM e os parâmetros de buffer configurados.
Memória dinâmica em ação
Para mostrar como ela funciona exatamente, criei uma VM de teste (Windows 8.1 64-bit, Veeam Backup & Replication v9 pré-instalado) com os parâmetros da figura acima. Startup RAM – 2GB, Mín RAM – 32 MB, Máx RAM – 1TB, memory buffer – 20%. Então eu liguei a VM e notei que durante a inicialização do SO, ela recebeu 2GB de RAM conforme esperado.
Figura 3. VM com memória dinâmica está inicializando
Quando terminou a inicialização, eu notei que o hipervisor começou a recuperar RAM da VM, que estava ociosa. A quantidade de RAM estava diminuindo e alcançou 698 MB em repouso.
Figura 4. VM com memória dinâmica está ociosa
Então iniciei a aplicação Veeam Backup & Replication e rodei uma tarefa de backup, só para gerar alguma carga na VM. Como esperado, a VM solicitou mais RAM do hipervisor e o hipervisor alocou mais memória gradualmente para ela.
Figura 5. VM com memória dinâmica com carga de trabalho
Eu também estive monitorando o valor de RAM do SO guest e notei que o Task Manager interno pode estar reagindo lentamente às mudanças na quantidade de RAM, ou pode simplesmente estar mostrando o valor incorreto. Por isto é melhor confiar na informação do Hyper-V Manager ou usar um Veeam Task Manager for Hyper-V para monitoramento de CPU e RAM.
Figura 6. Veeam Task Manager para Hyper-V
Conclusão
A memória dinâmica do Hyper-V é uma grande ajuda para os administradores de Hyper-V. A tecnologia permite rodar múltiplas VMs com sobreutilização de RAM e balancear dinamicamente o consumo de recursos, de acordo com a carga real da VM. Quando você estiver com recursos de RAM reduzidos ou deseje gerenciar melhor seus recursos, você já sabe o que habilitar.