Como descrever os requisitos de desempenho do VMware para nosso aplicativo a um administrador do VMware?

23

Freqüentemente, uma instalação de nosso aplicativo baseado no Debian-estável no local é executada em uma máquina virtual - normalmente no VMware ESXi. No caso geral, não temos visibilidade ou influência sobre o ambiente de virtualização e não temos acesso, por exemplo, ao cliente VMware vCenter ou equivalente. Eu me concentro no VMware aqui, porque esse é de longe o mais comum que vemos.

Gostaríamos de:

  • Informe ao administrador do VMware de um cliente: Você pode executar nosso aplicativo, por exemplo, no seu ambiente VMware ESX, desde que atenda aos critérios de desempenho X, Y e Z.
  • Ser capaz de determinar se os critérios X, Y e Z são de fato atendidos continuamente (por exemplo, agora ), mesmo em um sistema em execução (não podemos parar nosso aplicativo e executar benchmarks, e um benchmark inicial não será suficiente, pois o desempenho em ambientes virtuais muda com o tempo).
  • Tenha certeza de que, se os critérios X, Y e Z forem atendidos, teremos recursos de HW virtual adequados para executar nosso aplicativo com desempenho satisfatório.

Agora, o que são X, Y e Z?

Vimos várias vezes que quando há problemas de desempenho, o problema não está no nosso aplicativo, mas no ambiente de virtualização. Por exemplo, outra máquina virtual usa toneladas de CPU, memória ou SAN nas quais os discos são realmente armazenados, e usa muito por algo que não seja nosso aplicativo. Atualmente, não temos como provar ou refutar isso.

Teoricamente, também é possível que, às vezes, nossa aplicação seja lenta ... ;-)

Como se determina a causa raiz dos nossos problemas de desempenho: ambiente virtual ou aplicativo?

Normalmente existem três áreas para problemas de desempenho CPU, memória e E / S de disco.

CPU

Por exemplo, no VMware, o administrador pode especificar Reserva e Limite, expresso em MHz, mas é, por exemplo, 512 MHz em um host ESX exatamente igual a 512 MHz em outro host ESX, possivelmente em um cluster ESX completamente diferente?

E como se mede se realmente conseguimos isso? Enquanto nosso aplicativo está em execução, talvez possamos ver que estamos com 212% de utilização da CPU em 4 CPUs. Isso ocorre porque nosso aplicativo está fazendo muito ou porque outra VM no mesmo host está executando uma tarefa intensiva da CPU e usando toda a CPU?

Memória (Balão?)

Se pedirmos, por exemplo, 16 GB de RAM, que geralmente é configurado, mas por causa dos balões , na verdade, temos apenas 4 GB e, surpresa, nosso aplicativo tem um desempenho ruim.

Pode-se perguntar às ferramentas VMware sobre o balão atual, mas descobrimos que ele geralmente está (ou pelo menos é impreciso). Vimos exemplos em que o sistema operacional acha que há 16 GB de RAM total, a soma da memória residente (RSS) de todos os processos é 4 GB de RAM, mas há apenas 2 GB de RAM livre, mesmo quando as ferramentas do VMware nos dizem que há 0 balão: - (

Além disso, apenas adicionar RSS não é válido, pois pode haver facilmente RAM compartilhada, por exemplo, memória de cópia na gravação, de modo que 512 MB + 512 MB não significa necessariamente 1 GB, mas pode significar algo menos. Portanto, não se pode simplesmente subtrair o RSS de todos os processos para obter uma medida da quantidade de RAM livre e, assim, detectar balões de forma confiável. Pode-se detectar alguns casos de balão, mas há outros casos em que o balão está em vigor, mas não é detectável por esse método.

E / S de disco

Acho que poderíamos representar graficamente ao longo do tempo o número de leituras e gravações do disco, o número de bytes lidos e gravados e o% de espera de E / S. Mas isso nos dará uma imagem precisa da E / S do disco? Imagino que se houver um minerador de bitcoin em execução em outra VM usando toda a CPU, nossa% de espera de IO aumentará, mesmo que a SAN subjacente ofereça exatamente o mesmo desempenho, simplesmente porque nossos recursos de CPU diminuem e, portanto, a espera de IO ( que é medido em% ) sobe.

Então, em resumo, qual idioma podemos usar para descrever, por exemplo, um administrador da VMware, qual desempenho precisamos, de maneira portátil e mensurável?

Peter V. Mørch
fonte
Quais são os requisitos reais da sua aplicação? O que você descreveu até agora não é suficiente para avaliar com precisão os requisitos de recursos em meu ambiente, e sou versado no VMware. Seu público-alvo teria um tempo ainda mais difícil. Na prática, acabo desconsiderando os requisitos do fornecedor e as VMs de medição / dimensionamento correto com base em métricas e observações históricas usando o vRealize Operations Manager.
ewwhite
1
@whwhite: Eu não sou especialista em hardware, por qualquer meio. Mas deixe-me ser específico e dizer que ele roda bem em um Core i7-5820K com 8 GB de RAM. Discos magnéticos ca. 2015 estão bem, o SSD é melhor (posso ser mais específico aqui, se necessário). Precisamos de 80 GB de espaço livre em disco.
Peter V. Mørch
2
Como administrador, eu diria: "quantos núcleos eu preciso alocar, qual é o requisito real de RAM, qual é o requisito de armazenamento sob uma perspectiva de IOPs e taxa de transferência, qual é a taxa de crescimento do armazenamento? com thin-provisioning, etc? "
ewwhite
O que seu aplicativo requer da perspectiva de desempenho? Você tem referências para sua aplicação? Dizer "It runs fine with x, y, and z"não é preciso o suficiente. Você precisa dizer a seus clientes exatamente o que seu aplicativo exige. Se eles dar-lhe os recursos e as aplicativo executa mal, em seguida, a questão não é "What do we need from a resource perspective?", mas"Why is it performing poorly even though the proper resources have been allocated?"
joeqwerty
1
@whwhite: "Resolvido"? Não. Ainda não tenho a encantadora palavra de 25 palavras que posso dar a um administrador da VMware e, em seguida, poderei testar e saber que obteremos um desempenho previsível, porque, como você sabe, "depende". Mas aceitei sua resposta, porque agora acho que um requisito tão preciso e mensurável não é possível e suas informações ajudam bastante a falar o idioma correto. No futuro, vou recomendar a opção "Se você deseja solucionar problemas de desempenho, precisaremos pelo menos visualizar o acesso ao seu vCenter".
Peter V. Mørch 22/10

Respostas:

23
  • Sério, a maioria dos administradores da VMware não é boa nisso: Má compreensão do gerenciamento de recursos, geralmente nenhum conhecimento do Linux (ajuda) e falta de largura de banda do tempo. Acho que a maioria dos administradores internos tem dificuldade em manter um conhecimento profundo sobre virtualização.

  • Felizmente, há um livro que você pode ler !

  • A maioria dos ambientes VMware não é ótima: design de cluster ruim, planejamento incorreto de recursos , armazenamento abaixo do padrão (por exemplo, Synology NAS), HA mal configurada, sem monitoramento ou aplicação de patches.

  • A VMware como organização falha conosco: são particularmente ruins na disseminação de informações atualizadas e na promoção de práticas recomendadas. Pesquisas básicas de perguntas comuns geram resultados a partir de 2009 e revisões mais antigas do VMware, apesar de processos e projetos terem mudado ao longo do tempo.

Todas essas coisas vão funcionar contra você.

Você deve determinar os requisitos reais da sua solução. Ser capaz de afirmar com precisão que seu dispositivo exige: 2 vCPU, 8 GB de RAM e 500 IOPs de desempenho de armazenamento ajudariam muito a alguém como eu.

A outra abordagem é observar um ambiente saudável ou ideal e extrapolar as métricas a partir daí.

Você descreveu problemas com determinadas implantações. Quais foram os problemas e os gargalos?


Um exemplo de uma VM de tamanho certo:

Um servidor Exchange para uma organização de 300 usuários.

  • Temos 6 semanas de mapas de calor de carga de trabalho / estresse versus tempo.
  • 6 vCPUs nos mantém acima da zona de estresse, com espaço para picos.
  • A RAM de 32 GB nos mantém acima do valor do estresse, mas não é uma quantidade irracional acima do que é realmente necessário.

insira a descrição da imagem aqui

  • Eu poderia recuperar alguns GB de RAM e uma vCPU, mas, apesar de tudo, essa é uma VM eficiente.
  • Seria sensato obter esse tipo de monitoramento de seu aplicativo em condições ideais.

insira a descrição da imagem aqui


Exemplos de monitoramento de recursos da VM.

Em ordem: - A VM é do tamanho certo. - A CPU está supercomprometida em todo o cluster, mas não estamos enfrentando contendas.

insira a descrição da imagem aqui

Bad-ish:

  • A VM nunca receberá toda a RAM com a qual está configurada.
  • A VM já está trocando RAM.
  • A CPU está super configurada.

insira a descrição da imagem aqui

ewwhite
fonte
2
Obrigado, ewwhite pela sua resposta. Por uma questão de argumento, digamos que em um cliente, ele funcione muito bem com: desempenho de armazenamento de 2 vCPU, 8 GB de RAM e 500 IOPs (da sua resposta). Em outro site do cliente, solicitamos a mesma coisa e obtemos isso, de acordo com o administrador da VMware. No entanto, as 2vCPUs são compartilhadas com outras 17 VMs com fome de CPU e a RAM de 8 GB também é aumentada. Eu não entendo muito bem os discos da VM, então digamos que realmente conseguimos isso. Nosso aplicativo tem um ótimo desempenho no primeiro desses dois ambientes ESXi e horrivelmente no outro. Como faço para medir essa diferença de dentro das VMs?
Peter V. Mørch
1
Você pode monitorar o " Roubo de CPU " na parte superior da sua VM para ver se a CPU foi supercomprometida demais. Para balão / troca de RAM, é difícil saber de dentro da VM, exceto pelo desempenho ruim. Você pode solicitar uma visão do vCenter e recursos para a VM. Veja acima para exemplos.
ewwhite
1
Vou dar uma olhada no CPU Steal. Às vezes, terminamos com o administrador do VMware apontando os dedos para o nosso aplicativo e apontando o dedo no ambiente lento do VMware. No entanto, na maioria das vezes, nem temos acesso ao vSphere e fica difícil solucionar problemas, quando funciona bem em outras instalações. Eu acho que uma abordagem poderia ser: "Se nós queremos desempenho solução de problemas, vamos precisar de, pelo menos, acesso vista a sua vCenter"
Peter V. Mørch
3
A maioria dos administradores da VMware nem sabe ler essas coisas. Eu gasto muito tempo limpando depois deles. Portanto, como fornecedor, é difícil solicitar acesso ou informações sobre sua configuração. Mas acho que seria melhor solidificar seus requisitos e aplicá-los. Embora eu normalmente não recomende definir reservas, se seu aplicativo for crítico, poderá fazer sentido. Ou, no mínimo, definindo uma "prioridade de compartilhamento". O que o aplicativo faz?
ewwhite
1
Vocês já consideraram distribuir isso como um dispositivo VMware com uma configuração pequena, média e grande recomendada?
ewwhite