Recomendações do uso de memória nos servidores Hyper-V (2008 R2)

Containers

Existem vários fatores de hardware que você deve levar em consideração quando pensa em uma solução de virtualização, mas um dos componentes mais importantes é a memória (RAM), pois esse é um fator determinante para se calcular a densidade de máquinas virtuais (VMs) de um servidor Hyper-V. Por isso é importante saber quanto de memória cada VM necessita. Ficar atento para não alocar mais memória que o necessário, bem como não prover memoria de menos.

Entender como obter o maior benefício do hardware do host Hyper-V é chave para uma melhor performance, e o NUMA (Non-Uniform Memory Access) é parte disso. A ideia do NUMA é aumentar a performance do acesso à memoria por processador. Para isso blocos de memória ficam localizados no mesmo barramento de cada processador. Assim um processador pode acessar o seu banco de memória local mais rápido do que a um banco de memória que não esta no seu barramento.

A versão do Hyper-V do Windows Server 2008 e do 2008 R2 não tem a opção de configurar a afinidade das VMs por NUMA, essa funcionalidade deve vir no Hyper-V do Windows 8. Entretanto é possível inferir o tamanho máximo de memória para que as VMs se beneficiem do NUMA, basta pegar o tamanho de memória e dividir pelo número de cores do servidor. Por exemplo, em servidor dual processor quad-core com 64GB de memória o cálculo seria 64/8. As máquinas virtuais que usem até 8GB, resultado do cálculo anterior, têm grandes chances de estarem usando memórias NUMA de um mesmo banco de um dos processadores, e obtendo assim melhor performance.

Parent Partition

No servidor Hyper-V o Hypervisor reserva pelo menos 300MB, e o sistema operacional requer no mínimo 512MB. O recomendado é que se reserve ao menos 2GB de memória para o servidor Hyper-V.

Outra recomendação é não utilizar o servidor Hyper-V para outras funções. Caso isso ocorra é necessário designar mais memória para o servidor desempenhar as demais funções que lhe foi designada. Lembre-se que essa memória não é pré-alocada e a garantia de disponibilidade dessa memória para o sistema operacional deve ser planejada/monitorada juntamente com a alocação de memória realizada pelas VMs.

Memória Dinâmica

No Windows Server 2008 R2 SP1 foi introduzido o conceito de memória dinâmica que permite que a máquina virtual consuma a memória física do servidor Hyper-V à medida que a VM for requisitando. O uso da memória dinâmica permite aumentar a densidade de maquinas virtual por servidor físico. Entretanto, nem sempre a memória dinâmica é a melhor opção.

Para as VMs que rodam serviço que requerem uma quantidade fixa de memória, ou aplicações que tentam usar toda a memória disponível do servidor são bons candidatos a não usarem memória dinâmica. Nestes casos o melhor é usar memória estática.

Outro ponto importante é que o uso de memória dinâmica em varias VMs tende a usar memorias de vários nós NUMA, logo, se performance for um ponto crucial o uso de memória dinâmica pode não ser a melhor opção.

Importante ressaltar que a memória dinâmica só pode ser configurada para as VMs que executam os seguintes sistemas operacionais: Windows 7, Vista, Windows Server 2003, Windows Server 2008 e superiores. Caso se configure memória dinâmica para outros sistemas operacionais ele só vai usar a memória definida no Startup RAM.

Configuração da Memória Dinâmica

 Item

 Descrição

Startup RAM

É a quantidade mínima de memória necessária para a VM iniciar. É também a quantidade de memória física que a VM vai alocar inicialmente.

A Microsoft recomenda 512MB para o Windows 7, Vista e Windows Server 2008, e 128MB para os Windows Server 2003.

Maximum RAM

O tamanho máximo de memoria que a VM pode alocar de memória física do servidor Hyper-V. Esse valor não pode ser menor que o Startup RAM e maior que 64GB. Tenha cuidado para não especificar um tamanho que memória que o sistema operacional da VM suporte.

Por padrão o Hyper-V coloca 64GB.

Memory buffer

Controla a quantidade de memória física que cada VM deve tentar reservar como buffer. O valor é representado em porcentagem porque o tamanho de memória utilizado pela VM muda ao longo da sua execução. A formula que determina o tamanho do buffer é :

Quantidade de memória utilizada pela VM / (valor do buffer / 100).

Por exemplo, uma VM que esteja utilizando 1024MB de memória, com a configuração de buffer de 20%, vai alocar aproximadamente 204MB, totalizando 1228MB de memória física no servidor Hyper-V.

Obs: O buffer não é mantido quando não se tem espaço de memória suficiente.

Memory weight

É uma forma de priorizar o uso de memória entre a VMs. No caso da utilização de memória do servidor Hyper-V começar a ficar escassa, a memória é alocada para as VMs com maior prioridade.