Recomendações sobre alocação de memória da VM Geral / Hyper-V

1

Eu tenho uma pergunta básica sobre a configuração da VM. Estou usando o Hyper-V, mas acho que a questão é bem genérica. Isto é para um escritório em casa, eu quero obter um desempenho razoavelmente bom nas VMs sem muito trabalho. Eu uso as VMs para testar / depurar meu software. Idealmente, eu teria todos os sistemas operacionais iniciados, mas apenas um (provavelmente zero na maioria das vezes) estaria recebendo uso ativo de cada vez.

Existem algumas diretrizes gerais para alocação de memória para VMs? Em um extremo, você pode dividir a memória total pelo número de VMs (4 GB no total, 4 VMs - 1 GB cada). No outro extremo do extremo, você poderia dar a cada VM memória cheia e deixar o sistema operacional arbitrar. Eu acho que ambos estão errados! Estou procurando uma "regra geral" para um desempenho razoável. Não tenho ideia de como o servidor da VM gerencia a memória para as VMs.

[editar] Fiz essa pergunta porque assumi incorretamente que o Hyper-V (versão 2008 R2) poderia fornecer dinamicamente memória adicional às VMs se houvesse mais disponível. Meu pensamento era que eu poderia alocar a memória, desde que o meu uso atingisse apenas uma VM de cada vez. Como o Hyper-V quer alocar a memória fixa para cada VM quando elas são iniciadas, eu preciso desligar algumas VMs e só executar as que preciso, ou definir as VMs para reduzir as alocações de memória e garantir que a memória física seja o suficiente para todas as alocações mais o processo Hyper-V e (possivelmente) o sistema operacional host.

Parece que o VMWare tem mais opções ao longo destas linhas, conforme indicado nas respostas fornecidas. [/ edit]

Obrigado Brett

    
por Brett Stottlemyer 23.01.2010 / 18:24

3 respostas

1

Como regra geral, você quer saber que, nas condições de pior caso, há RAM física suficiente para que todas as funções padrão funcionem de forma confiável a partir da RAM. O que esse número mágico é varia de sistema operacional para sistema operacional e varia muito dependendo dos usos em que você coloca o sistema operacional convidado. Você pode facilmente inicializar um Windows 2003 Server com algumas centenas de meg de RAM, algumas distros compactas do Linux com 30Meg ou menos e assim por diante, mas se você quiser rodar o SQL Server em seu guest com bancos de dados com vários gigabytes, então você quero ter certeza de que ele realmente tem RAM real fazendo o backup do par de Gig de RAM que ele acha que tem.

Como o Hypervisor lida com RAM varia muito entre fornecedores e produtos. O Hyper-V não suporta o que é chamado de supercomprometimento de memória, portanto, você está limitado a alocar memória RAM com base no que está fisicamente disponível. O ESX da VMware permite o comprometimento excessivo, definindo regras para a arbitragem de contenção (compartilhamentos) para controlar o que acontece quando a VM fica ocupada e a quantidade total de RAM física é insuficiente para atender à carga. Em um ambiente Hyper-V, você não tem esse nível de controle, portanto, é necessário atribuir memória RAM suficiente na frente.

O VMware tem alguns outros truques para ajudar na superalocação de memória; Partilha de páginas transparente e balões de memória.

O Transparent Page Sharing é basicamente armazenamento de instância única para RAM - o Hypervisor monitora os blocos de RAM alocados para cada VM e, se encontrar blocos comuns em várias VMs, ele mantém apenas uma única cópia e aponta todas as VMs para ela qualquer VM subsequentemente tenta gravar nesse bloco ele divide uma cópia para que coisas ruins não aconteçam. Em um ambiente de VM homogêneo, isso pode economizar uma boa quantidade de RAM sem afetar o desempenho.

Memory Ballooning é um mecanismo que permite ao Hypervisor "emprestar" RAM alocada para uma VM e fornecê-la a uma mais importante usando um driver do sistema operacional convidado na primeira que aloca um pedaço (grande) de memória dentro da Guest. . Uma vez alocado, o Hypervisor pode realocar com segurança a RAM física que armazena a memória que o driver de balão alocou a ela. A vantagem de fazer isso em comparação com a abordagem direta em que o Hypervisor apenas troca a memória da VM Convidada em disco para realocar a RAM é que o Convidado que está perdendo a RAM física está ciente de que a memória está em uso por algo e há um risco significativamente reduzido de que a RAM "emprestada" tenha sido alocada a quaisquer funções importantes do sistema dentro do Visitante.

Editado para adicionar: Eu nunca tentei ver o que acontece com o Hyper-V quando você tenta inicializar VMs que levará os requisitos de memória além da quantidade de RAM física disponível, toda a documentação que posso encontrar afirma que a VM obtém toda a RAM que você tem configurado para eles e, em seguida, o Hypervisor e o sistema operacional host são alocados para o que resta. O Hyper-V não tem nenhum mecanismo para aplicar uma reserva mínima de RAM a uma VM e, em seguida, ter o restante alocado de um pool, embora ele forneça esse mecanismo para os recursos da CPU. Novamente, o ESX \ ESXi da VMware fornece essa opção.

Vale a pena lembrar que você também precisa planejar a memória física que é necessária tanto pelo Hypervisor quanto pelo sistema operacional host (desconsidere o último caso esteja executando o servidor Hyper-V bare-metal). O conselhos de ajuste de desempenho do Hyper-V da Microsoft afirma que, além do XGig de RAM você tem em sua VM, você precisa ter:

  • 300 MB para o hipervisor
  • mais 32 MB para o primeiro GB de RAM alocado para cada máquina virtual
  • mais outros 8 MB para cada GB adicional de RAM alocado para cada máquina virtual
  • mais 512 MB para o host que está operando sistema em execução na partição raiz

Se você não tiver RAM física suficiente para isso, o desempenho será seriamente afetado e possivelmente a estabilidade também.

    
por 23.01.2010 / 19:02
0

Não é uma pergunta genérica porque o Hyper-V não pode fazer o compartilhamento de páginas de memória como o VMWare pode, essa tecnologia pode alterar enormemente a maneira como a memória da VM é alocada. Se o Hyper-V oferecer suporte, sugiro que você atribua uma quantidade inicial às VMs e, em seguida, examine o uso real ao longo do tempo por VM, alterando a alocação à medida que descobrir mais sobre seu comportamento.

    
por 23.01.2010 / 18:59
0

O Hyper-V no Windows Server 2008 R2 suporta um recurso de Memória Dinâmica (estou executando o SP1 - não tenho certeza se estava na versão RTM). Eu percebo que sua pergunta é bem antiga, então provavelmente não foi quando você perguntou.

Comecei alocando memória estática para cada VM guest, mas rapidamente maximizava meu servidor. A memória dinâmica permite atribuir uma quantidade inicial (talvez baixa) e um valor máximo por VM. Em seguida, ele alocará a memória sob demanda e também recuperará a memória não utilizada. Você precisa editar as configurações de cada VM para configurá-la. Ela não está disponível ao criar uma nova VM. Acabei de reconfigurar um monte de VMs para usar a memória dinâmica e reduzi meu comprometimento total de memória em quase metade.

As VMs que eu configurei para memória dinâmica mostram a demanda e o status atual da memória. A VM realçada ainda está sendo executada em sua alocação inicial de 1 GB. O servidor do Exchange (segundo do topo) é um porco grande e gordo, com 1 GB inicial e mais um par. O recurso permite um buffer configurável (20% por padrão), então o Hyper-V deu ao Exchange a quantia que ele exige, mais alguns extras.

    
por 10.01.2013 / 13:36