vSphere education - Quais são as desvantagens da configuração de VMs com muita memória RAM?

54

O gerenciamento de memória VMware parece ser um ato de equilíbrio complicado. Com RAM de cluster, pools de recursos, técnicas de gerenciamento do VMware (TPS, ballooning, 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 de cluster dedicados do vSphere. No entanto, eles estão configurando as máquinas virtuais como se estivessem no 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-se 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 de "problemas".

Resumo do pool de recursos - Parece quase 4: 1 supercomprometido. Observe a grande quantidade de RAM em balão.

Alocaçãoderecursos-AcolunaAlocaçãodepiorescasosmostraqueessasVMsteriamacessoamenosde50%desuaRAMconfiguradasobcondiçõesrestritas.

OgráficodeutilizaçãodememóriaemtemporealdaVMsuperiornalistagemacima.4vCPUe64GBdeRAMalocados.Amédiaéinferiora9GBdeuso.

ResumodamesmaVM

  • Quais são as desvantagens da supercomprometimento e da configuração excessiva de recursos (especificamente RAM) em ambientes do vSphere?

  • Supondo que as VMs podem ser executadas com menos memória RAM, é justo dizer que existe uma sobrecarga na configuração de máquinas virtuais com mais RAM do que elas precisam?

  • Qual é o contra-argumento para: "se uma VM tem 16GB de RAM alocada, mas usa apenas 4GB, qual é o problema ?? "? Por exemplo. Os clientes precisam ser informados de que as VMs não são o mesmo que o 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 vCenter Operations Manager para criar um perfil deste ambiente e obter alguns detalhes sobre as estatísticas do cluster listadas acima. Enquanto as coisas são definitivamente supercomprometidas, as VMs são realmente tão configuradas com RAM desnecessária que a pegada de memória real (minúscula) não mostra nenhuma contenção de memória no nível do cluster / host ...

Meu ponto strong é que as VMs devem ter o tamanho certo com um pouco de buffer para o cache no nível do sistema operacional. A supercomprometimento por ignorância ou "requisitos" do fornecedor leva à situação apresentada aqui. O balão de memória parece ser ruim em todos os casos, já que há um impacto no desempenho, portanto, o dimensionamento correto pode ajudar a evitar isso.

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

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

O VMware descreve isso como um sintoma de supercomprometimento de memória pesada . Então, acho que isso responde à pergunta.

relatório"Máquinas virtuais de grandes dimensões" do vCops ...

vCops"Gráfico de resíduos recuperáveis" ...

    
por ewwhite 06.08.2013 / 20:10

2 respostas

43

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

Em geral, o over-commit de memória deve ser evitado, pois cria exatamente esse tipo de problema. No entanto, há momentos em que isso não pode ser evitado, por isso, é preciso avisar antecipadamente!

What are the downsides of overcommitting and over-configuring resources (specifically RAM) in vSphere environments?

A maior desvantagem de recursos excessivamente comprometidos é que, se você tiver contenção, seus hosts serão forçados a fazer um balão, trocar ou planejar de forma inteligente / duplicar os bastidores para fornecer a cada VM a RAM necessária.

Para o balão, o vSphere inflará um "balão" de RAM dentro de uma VM escolhida e, em seguida, fornecerá essa RAM com balão ao convidado que precisar dela. Isso não é realmente "ruim" - as VMs estão roubando a memória uns dos outros, então não há troca de disco acontecendo - mas isso poderia levar a alertas errados e métricas distorcidas se eles dependessem da análise do uso de RAM da VM, já que a RAM venceu pode ser marcado como "balão", apenas que está "em uso" pelo SO.

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

Dê uma olhada no whitepaper sobre gerenciamento de memória do vSphere (PDF) - especificamente "Reclamação de memória no ESXi" (página 8) - se você precisar de uma explicação mais detalhada.

Assuming that the VMs can run in less RAM, is it fair to say that there's overhead to configuring virtual machines with more RAM than they need?

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 , pelos motivos acima).

A memória total em uso por todas as suas VMs é a curva "Ativo" mostrada em seus gráficos. É claro, você nunca deve confiar apenas nesse número ao calcular quanto gostaria de supercompromissar, mas se tiver métricas históricas como você, poderá analisá-lo e resolvê-lo com base no uso real.

A diferença entre RAM "Ativo" e "Consumido" é discutida neste tópico da Comunidade VMware .

What is the counter-argument to: "if a VM has 16GB of RAM allocated, but only uses 4GB, what's the problem??"? E.g. do customers need to be educated?

A resposta curta para isso é yes - os clientes devem sempre ser informados sobre as melhores práticas, independentemente das ferramentas à sua disposição.

Os clientes devem ser educados para dimensionar suas VMs de acordo com o que eles usam , em vez do que eles querem . Na maior parte do tempo, as pessoas especificam em excesso suas VMs apenas porque elas podem precisam de 16 GB de RAM, mesmo que estejam historicamente se atrapalhando com 2 GB dia após dia. Como administrador do vSphere, você tem o conhecimento, as métricas e o poder para desafiá-los e perguntar se eles realmente precisam da RAM que alocaram.

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

Além disso, o vMotion automatizado (chamado Programação de recursos distribuídos pela VMware) é essencialmente um balanceador de carga para suas VMs - se uma única VM estiver se tornando um recurso hog, o DRS deve migrar as VMs para aproveitar ao máximo os recursos do cluster.

What specific metric should be used to meter RAM usage. Tracking the peaks of "Active" versus time?

Principalmente abordado acima - sua principal preocupação deve ser o uso de RAM "ativa", embora você deva definir cuidadosamente os limites de supercomprometimento para que, se 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ê está confortável.

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

por 02.08.2013 / 15:14
19

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

O excesso de comprometimento de memória no VMware não é algo que você deva fazer de propósito. Geralmente, mostra que você ou seu cliente estão fazendo a inscrição excessiva no hardware.

Se o excesso de confirmação for a única opção, então strongmente avisarei que você aplica regras de prioridade. Se alguém está empenhado em dar uma VM não crítica de 16GB de vRam quando precisa apenas de 4GB - pelo menos, colocar essa VM em um pool de recursos baixo ou dar-lhe uma baixa prioridade. Você realmente não deseja que um banco de dados de produção crítico seja trocado pelo hipervisor. Não só o desempenho vai pelo ralo, ele também vai devorar as filas de E / S contra o armazenamento de back-end.

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

    
por 02.08.2013 / 17:09