Treinamento em vSphere - Quais são as desvantagens de configurar VMs com * muita * RAM?

57

O gerenciamento de memória do VMware parece ser um ato de equilíbrio complicado. Com RAM de cluster, Pools de recursos, técnicas de gerenciamento da VMware (TPS, balão, troca de host), utilização de RAM no convidado, troca, reservas, compartilhamentos e limites, há muitas variáveis.

Estou em uma situação em que os clientes estão usando recursos dedicados de cluster do vSphere. No entanto, eles estão configurando as máquinas virtuais como se estivessem em hardware físico. Por sua vez, isso significa que uma compilação de VM padrão pode ter 4 vCPUs e 16 GB ou mais de RAM. Eu venho da escola de começar pequeno (1 vCPU, RAM mínima), verificando o uso no mundo real e ajustando-o conforme necessário. Infelizmente, muitos requisitos de fornecedores e pessoas não familiarizadas com a virtualização solicitam mais recursos do que o necessário ... Estou interessado em quantificar o impacto dessa decisão.


Alguns exemplos de um cluster "problemático".

Resumo do pool de recursos - Parece quase 4: 1 supercomprometido. Observe a alta quantidade de RAM com balão. insira a descrição da imagem aqui

Alocação de recursos - A coluna Alocação de pior caso mostra que essas VMs teriam acesso a menos de 50% de sua RAM configurada em condições restritas. insira a descrição da imagem aqui

O gráfico de utilização de memória em tempo real da VM superior na lista acima. 4 vCPU e 64 GB de RAM alocados. A média é de 9 GB de uso. insira a descrição da imagem aqui

Resumo da mesma VM insira a descrição da imagem aqui


  • Quais são as desvantagens dos recursos de confirmação excessiva e excesso de configuração (especificamente RAM) nos ambientes vSphere?

  • Supondo que as VMs possam rodar com menos RAM, é justo dizer que há uma sobrecarga na configuração de máquinas virtuais com mais RAM do que elas realmente precisam?

  • Qual é o contra-argumento para: "se uma VM tem 16 GB de RAM alocada, mas usa apenas 4 GB, qual é o problema? "? Por exemplo, os clientes precisam ser informados de que as VMs não são iguais ao hardware físico?

  • Quais métricas específicas devem ser usadas para medir o uso da RAM. Rastreando os picos de "Ativo" versus tempo? Assistindo "Consumido"?


Atualização: usei o vCenter Operations Manager para criar um perfil desse ambiente e obter alguns detalhes sobre as estatísticas de cluster listadas acima. Embora as coisas sejam definitivamente supercomprometidas, as VMs são realmente tão superconfiguradas com RAM desnecessária que o espaço de memória real (minúsculo) não mostra contenção de memória no nível de cluster / host ...

Minha opinião é que as VMs devem realmente ser do tamanho certo com um pouco de buffer para o cache no nível do SO. O supercomprometimento por ignorância ou "requisitos" do fornecedor leva à situação apresentada aqui. Balões de memória parecem ruins em todos os casos, pois há um impacto no desempenho; portanto, o tamanho correto pode ajudar a evitar isso.

Atualização 2: algumas dessas VMs estão começando a falhar com:

kernel:BUG: soft lockup - CPU#1 stuck for 71s! 

A VMware descreve isso como um sintoma de comprometimento excessivo da memória . Então eu acho que isso responde à pergunta.

insira a descrição da imagem aqui


Relatório de vCops "Máquinas virtuais de grandes dimensões" ... insira a descrição da imagem aqui

vCops Gráfico "Resíduos recuperáveis" ...

insira a descrição da imagem aqui

ewwhite
fonte

Respostas:

45

O gerenciamento de memória do vSphere é bastante decente, embora os termos usados ​​geralmente causem muita confusão.

Em geral, a confirmação excessiva de memória deve ser evitada, pois cria exatamente esse tipo de problema. No entanto, há momentos em que isso não pode ser evitado, portanto, o aviso é precedido!

Quais são as desvantagens dos recursos de confirmação excessiva e excesso de configuração (especificamente RAM) nos ambientes vSphere?

A principal desvantagem dos recursos excessivamente comprometidos é que, se você tiver discórdia, seus hosts serão forçados a fazer balão, trocar ou agendar / desduplicar inteligentemente os bastidores para fornecer a cada VM a RAM necessária.

Para balão, o vSphere inflará um "balão" de RAM dentro de uma VM escolhida e, em seguida, fornecerá essa RAM balão ao convidado que precisar. Isso não é realmente "ruim" - as VMs estão roubando a RAM uma da outra, por isso não há troca de disco -, mas isso pode levar a métricas de alerta e distorção errôneas se depender da análise do uso da RAM da VM, conforme a RAM venceu deve ser marcado como "balão", apenas que está "em uso" pelo sistema operacional.

O outro recurso que o vSphere pode usar é o TPS (Transparent Page Sharing) - que é essencialmente a deduplicação de RAM. O vSphere verificará periodicamente toda a RAM alocada, procurando páginas duplicadas. Quando encontrado, desduplicará e liberará as páginas duplicadas.

Dê uma olhada no white paper do vSphere Memory Management (PDF) - especificamente "Recuperação de memória no ESXi" (página 8) - se você precisar de uma explicação mais detalhada.

Supondo que as VMs possam rodar com menos RAM, é justo dizer que há uma sobrecarga na configuração de máquinas virtuais com mais RAM do que o necessário?

Não há sobrecarga visível - você pode alocar 100 GB de RAM em um host com 16 GB (no entanto, isso não significa que você deva , pelas razões acima).

A memória total em uso por todas as suas VMs é a curva "Ativa" mostrada em seus gráficos. Obviamente, você nunca deve confiar apenas nesse valor ao calcular quanto gostaria de comprometer demais, mas se tiver métricas históricas, poderá analisá-las e resolvê-las com base no uso real.

A diferença entre a RAM "Ativa" e a "Consumida" é discutida neste encadeamento da Comunidade VMWare .

Qual é o contra-argumento para: "se uma VM tem 16 GB de RAM alocada, mas usa apenas 4 GB, qual é o problema?" ? Por exemplo, os clientes precisam ser educados?

A resposta curta é sim - os clientes devem sempre ser instruídos sobre as melhores práticas, independentemente das ferramentas à sua disposição.

Os clientes devem ser instruídos a dimensionar suas VMs de acordo com o que usam , e não com o que desejam . Na maioria das vezes, as pessoas especificam demais suas VMs apenas porque podem precisar de 16 GB de RAM, mesmo que historicamente estejam perdendo 2 GB dia após dia. Como administrador do vSphere, você tem conhecimento, métricas e poder para desafiá-los e perguntar se eles realmente precisam da RAM que eles alocaram.

Dito isto, se você combinar o gerenciamento de memória do vSphere com limites de supercomprovação cuidadosamente controlados, raramente terá um problema na prática; a probabilidade de ficar sem memória RAM por um período prolongado é relativamente remota.

Além disso, o vMotion automatizado (chamado de agendamento de recursos distribuídos da VMware) é essencialmente um balanceador de carga para suas VMs - se uma única VM estiver se tornando uma fonte de recursos, o DRS deve migrar as VMs para fazer o melhor uso dos recursos do cluster.

Qual métrica específica deve ser usada para medir o uso da RAM. Rastreando os picos de "Ativo" versus tempo?

Principalmente coberto acima - sua principal preocupação deve ser o uso de RAM "ativo", embora você deva definir cuidadosamente seus limites de supercomprometimento para que, se você atingir uma determinada proporção ( este é um exemplo decente , embora possa estar um pouco desatualizado). Normalmente, eu certamente ficaria dentro de 120% da RAM total do cluster, mas cabe a você decidir com qual proporção você se sente confortável.

Alguns bons artigos / discussões sobre over-commit de memória:

Craig Watson
fonte
Meu entendimento é que mais RAM alocada para uma VM significa que é mais difícil para o DRS migrar a VM - leva mais tempo para migrar entre nós, porque leva mais tempo para copiar a RAM; e quanto mais RAM for necessária, menos provável é que o DRS consiga encontrar um pedaço grande o suficiente que seja gratuito. Isso pode ser particularmente problemático (acreditei) se você tiver um evento (por exemplo, falha de hardware) que reduz a capacidade no cluster. As VMs pequenas são fáceis de embaralhar e provavelmente não notam muita interrupção; as grandes VMs podem ser complicadas. Fui informado corretamente?
precisa
2
@ James - apenas a memória ativa (ou seja, em uso) é migrada durante o vMotion, portanto, a quantidade de RAM que você aloca para suas VMs não importa tanto. Referência: vmware.com/files/pdf/VMware-VMotion-DS-EN.pdf
Craig Watson
Ótima resposta. Atualizei minha pergunta com mais detalhes desse cluster específico. Seus pontos são bons, no entanto. Acontece que as VMs nesta configuração estão fortemente superconfiguradas. O uso de RAM ativa está bem abaixo dos recursos físicos do cluster, portanto não há contendas ... Apenas balonismo / troca / feiura pesados. Suspeito que dimensionar corretamente as VMs aliviará essa pressão.
precisa saber é
21

Além da excelente resposta de Craig Watson, gostaria de acrescentar o seguinte:

O comprometimento excessivo da memória no VMware não é algo que você deve fazer de propósito. Em geral, isso mostra que você ou seu cliente estão assinando demais o hardware.

Se o comprometimento excessivo for a única opção, recomendo fortemente que você aplique regras de prioridade. Se alguém está empenhado em fornecer uma VM não crítica de 16 GB de vRam quando ela precisa apenas de 4 GB - pelo menos, coloque essa VM em um pool de recursos baixos ou dê uma prioridade baixa. Você realmente não deseja que um banco de dados crítico de produção seja trocado pelo hypervisor. O desempenho não apenas diminuirá o fluxo, como também consumirá as filas de E / S no armazenamento de back-end.

Se você estiver executando em um armazenamento rápido (FusionIO, Violino, SSDs locais etc.), a troca pode não ser uma grande preocupação, mas com o armazenamento SAN tradicional, você afetará eventualmente cada VM e host conectado ao mesmo array / controlador.

pauska
fonte
4
Boa observação sobre o impacto do armazenamento na troca. Isso explica alguns dos problemas de desempenho VNX que eu vi ....
ewwhite
Ponto brilhante, eu nunca pensei em usar o argumento de E / S de armazenamento, #
068 Dan Dan