Quando dimensionamos a memória de uma maquina virtual em servidores de virtualização levamos em conta apenas a quantidade de memória que será alocada para a mesma, e nada mais. Na verdade para qualquer servidor de virtualização não se deve considerar apenas a quantidade de memória alocada para uma maquina virtual como forma de dimensionar a quantidade de memória disponível. Os servidores de virtualização necessitam de uma memória extra para gerenciar cada maquina virtual, e é fundamental que este cálculo seja feito para que o dimensionamento de hardware seja correto.
Falando especificamente do Hyper-V existe um cálculo que voce pode fazer para dimensionar a memoria extra necessária para cada maquina virtual que será utilizada. Nós chamamos esta técnica de Memory Overhead, e funciona da seguinte forma:
Ex: Vamos imaginar uma maquina virtual com 16GB de RAM. O Memory Overhead para gerenciar e manter esta maquina virtual será de 32MB (referente ao primeiro Gigabyte de RAM) + 32MB X 15 (lembre-se que o primeiro Gigabyte já foi contabilizado com 32MB, portanto restaram 15 Gigabytes).
16GB VM = 32MB + (15 x 8MB) = 152MB de Memory Overhead. Em outras palavras, manter uma maquina virtual (VM) de 16GB na verdade irá consumir do servidor de virtualização o total de 16,152MB
Este cálculo é bem interessante, pois se você pretende comprar um servidor de virtualização e, na hora que dimensionar a memória do mesmo vai apenas calcular a quantidade de RAM utilizada pelas VMs, então poderá ter problemas de desempenho pois esqueceu de calcular o Memory Overhead. Esta formula matemática de calculo é publicamente divulgada através do documento para download chamado de “Performance Tuning Guidelines for Windows Server 2008 R2.docx”(disponível para download no site da Microsoft). Importante observar que neste cálculo não faz diferença a quantidade de processadores virtuais alocados para a VM, apenas a quantidade de memória alocada. Outro fator é que as informações acima se referem exclusivamente ao Microsoft Hyper-V Server 2008 R2 e Microsoft Windows Server 2008 R2 com Hyper-V.
Se você possui servidores de virtualização com Vmware ESXi 5.0 também deve se atentar a estes cálculos de Memory Overhead. Se utilizarmos a mesma situação acima: 1 VM com 16GB de RAM e 1 processador virtual temos o Memory Overhead de 335MB. Estes valores podem variar, de acordo com a quantidade de memória RAM alocada e quantidade de processadores virtuais, conforme tabela abaixo:
Fonte: vSphere Resource Management Guide – www.vmware.com
Nesta tabela observe que se for criado uma VM com 32GB de RAM e 4 processadores virtuais teremos o Memory Overhead de 948MB, praticamente 1GB de RAM. Estes valores são por maquina virtual, portanto manter maquinas virtuais com muita memória e muitos processadores virtuais pode impactar significativamente o custo de memória RAM necessária no servidor físico.
Outro ponto importante referente ao contexto de sobrecarga de memória refere-se a reserva de memória. Em servidores de virtualização baseados em Hyper-V não é recomendado adicionar outros papéis (Roles) ou serviços além do próprio Hyper-V. O motivo é que serviços ou papéis extras podem concorrer em memória com o serviço de Hyper-V e as maquinas virtuais, diminuindo a capacidade máxima suportada pelo servidor. No caso do serviço de Hyper-V é possível fazer uma reserva de memória específica para ele, de forma que outros processos e serviços do Windows não possam utilizar. Este recurso é chamado de Memory Reserve e permite estabelecer a quantidade de memória RAM máxima que o serviço de Hyper-V pode ter exclusivamente para si. Esta alteração não é gráfica, e feita via Registry:
Registry Key: HKLMSOFTWAREMicrosoftWindows NTCurrentVersionVirtualization
Value Name: MemoryReserve
Value Type: REG_DWORD
O calculo utilizado é de 384MB (padrão) + 30MB para cada 1GB de RAM da memória física do servidor. Um servidor com 128GB de RAM pode ser configurado para utilizar até 4194 (127 X 30MB=3810 +384). Na prática as pessoas de forma geral alocam aprox 4GB de RAM para o serviço de Hyper-V, mas agora você sabe como delimitar corretamente. Lembre-se de que é importante realizar um backup da chave do Registry antes de modificar.
You must be logged in to post a comment.
3:35:44 pm
Dúvida:
No caso dado da VM por exemplo de 16 Gb de Mem. e 4 Vcpu, o host irá precisar de praticamente 1 GB de Mem. para manter a VM, certo? Mas somente se os 16 GB de Mem. estiverem em uso ou usando pouco da Mem alocada que o host já irá usar os qse um 1 GB?