Desperdício de recursos na virtualização

4

Eu fiz esta pergunta no SO, mas foi sugerido que eu perguntasse aqui no SF, então aqui vai.

link

Não tenho certeza se esse é o lugar certo para fazer a pergunta. No entanto, espero que seja.

Ao procurar um VPS hoje cedo, eu estava tentando entender como cada contêiner funcionaria em segundo plano. Tendo em mente o fato de que o sistema operacional usa a maior parte da memória e energia de um sistema, não ter múltiplos sistemas operacionais na mesma máquina significa mais desperdício de recursos.

Por exemplo, se eu estava rodando o centOS em uma caixa dedicada e ele estava em execução, digamos 20 processos em segundo plano no sistema operacional. Então, eu instalo uma plataforma de virtualização e instalo mais 5 máquinas virtuais centOS no mesmo sistema que são exatamente iguais ao sistema operacional do host. Isso não significa a duplicação desses 20 processos 6 vezes? Então internamente a troca de contexto está acontecendo entre 120 processos ao invés de 20?

Outras notas: Aqui está um exemplo do que eu estou pensando: Eu tenho uma configuração mestre-escravo para um processo de longa duração, cpu + memória intensiva, que pode ser distribuído para 4 máquinas. Digamos que quando o processo é executado nessas 4 máquinas com digamos 1 CPU de 1 Gh e 1 Gig de RAM, recebo 400 resultados por hora do cluster (assumindo 100 resultados de uma máquina). Agora eu recebo uma máquina maior (digamos 4Gh e 4 Gig RAM), tenho 4 hosts virtuais com CPU de 1 Gz e 1 Gig RAM. Essa configuração me fornecerá os mesmos 100 resultados por hora desses quatro hosts virtuais?

    
por Sabeen Malik 11.06.2010 / 09:32

3 respostas

2

A maioria dos processos nas máquinas convidadas estará em estado de suspensão quase o tempo todo. Você pode verificar quantos processos duram com o comando ps. Nos hipervisores modernos, as páginas de memória duplicadas são compartilhadas entre máquinas virtuais com uma técnica chamada KSM no Linux. VMware tem a mesma coisa. Não tenho certeza sobre o Hyper-V nos dias de hoje.

Em suma, a virtualização tem sobrecarga, mas não tanto quanto você pensa.

    
por 11.06.2010 / 10:12
2

Em primeiro lugar, "o fato de o sistema operacional usar a maior parte da memória e da energia de um sistema", isso está longe de ser um fato, muito longe para a maioria dos servidores, na verdade.

Mas, para responder à sua pergunta, sim, significa que todos esses processos estão acontecendo, mas a idéia é que, com as CPUs multi-core atuais, um sistema operacional dificilmente pode usar todos os recursos disponíveis, por que não usá-lo para virtualizar. Se você tem um único CPU antigo, então ele irá desacelerar tudo, mas não é o que acontece na maioria dos casos.

    
por 11.06.2010 / 09:47
2

Vejo que a parte da sua pergunta referente à pegada do sistema operacional já foi respondida na SO, portanto, vou abordar apenas as considerações de desempenho aqui.

Você não obterá o nível de desempenho exato mesmo . No entanto, não posso dizer com certeza se o desempenho será melhor ou pior.

  • Sim, mesmo com a atual virtualização assistida por hardware e hardware de última geração, ainda existe uma certa sobrecarga incorrida. No entanto, essa sobrecarga está ficando menor a cada dia e pode já ser insignificante para um determinado uso.

  • Por outro lado, seguindo seu exemplo de quatro máquinas executando um processo distribuído, há muito mais variáveis que podem afetar o desempenho. Por exemplo, pode ser que os quatro nós precisem se comunicar muito uns com os outros sobre o que estão fazendo. Nesse caso, você pode ver que a velocidade e o tempo de resposta dessas comunicações aumentam se as quatro máquinas forem executadas em uma máquina de hardware (usando algum tipo de comunicação de rede entre VMs). E isso pode aumentar o desempenho do processo geral.

  • Para dar outro exemplo, vamos supor que o processo é muito intensivo em rede. Se você tiver quatro máquinas físicas executando o processo, todas elas terão sua própria placa de interface de rede. Mas se você tiver quatro VMs em execução em um servidor (supondo que o servidor tenha apenas uma NIC), as VMs precisarão compartilhar uma única NIC. Com largura de banda igual por NIC nos dois casos, isso diminuiria o desempenho.

Resumindo: basicamente tudo depende dos recursos disponíveis e da intensidade com que cada tipo de recurso está sendo usado.

    
por 11.06.2010 / 10:31