Instalação simples versus máquinas virtuais - o que é melhor para multicore? [fechadas]

0

No momento, compramos um novo servidor, com 64 GB de RAM e 8 núcleos com suporte a hyperthreading. Nós vamos construir um sistema usando:

  • nginx.
  • apache.
  • mysql.
  • php

Então, a questão é sobre desempenho: como usar os núcleos com mais eficiência?

É melhor instalar um único sistema operacional e ajustar os aplicativos individuais ou criar várias máquinas virtuais e permitir que cada máquina explore seus recursos (por exemplo, núcleo)?

    
por SPIRiT_1984 28.05.2015 / 14:06

2 respostas

2

As vantagens de usar máquinas virtuais não são tanto no aumento do desempenho em si. A idéia principal é que, em muitos casos, você deseja o isolamento do sistema, ou seja, você não deseja que um sistema interfira no outro. Isso desempenha um papel importante na computação em nuvem, já que um provedor pode hospedar appliances para muitos clientes diferentes e, é claro, eles precisam estar separados com segurança. Se uma abordagem bare metal for usada, caso em que cada cliente tem sua própria máquina, os sistemas provavelmente não serão totalmente utilizados. Hospedar muitas VMs em uma única máquina física aumenta a utilização e, ao mesmo tempo, oferece um ambiente seguro.

No entanto, a hospedagem de VMs vem com sua própria sobrecarga . O software pode não funcionar tão eficientemente no hardware virtualizado, as máquinas virtuais devem ser gerenciadas a partir do host e há muita redundância entre as VMs. Isso introduz uma penalidade no desempenho, em vez de um bônus.

No seu caso, você pode querer executar cada serviço em uma máquina virtual separada por motivos de segurança ou manutenção. Se um de seus serviços for comprometido, outros podem não ser afetados. Além disso, é fácil criar instantâneos de cada VM, o que facilita a manutenção, entre outras coisas. Eu não apostaria no melhor desempenho.

Uma alternativa às VMs é a virtualização do nível do sistema operacional , como a tecnologia de contêineres, recentemente popularizada no Linux pelo Docker . Eles permitem várias instâncias de espaço de usuário isoladas, eliminando a necessidade de executar vários sistemas operacionais completos, reduzindo significativamente a penalidade de desempenho e fornecendo muitas das vantagens das VMs. Os contêineres do Docker são fáceis de implementar e também suportam instantâneos.

    
por 28.05.2015 / 14:42
0

So, the question is about performance - how to use the cores most effectively?

Se você não tem mais nada nesta caixa, eu iria com uma instalação simples e simples - embora eu não seja amigo de colocar tudo em uma caixa. Não há quase nada comparável a correr "nativo". Como disse o @Benjamin B.: O Docker é um nível de virtualização com sobrecarga muito baixa. Mas, a menos que você tenha motivos para virtualizar, eu não faria isso com uma configuração tão simples. Ele adiciona pelo menos uma sobrecarga organizacional extra ao seu projeto.

Is it better to create a single operation system and tune the components I described effectively or create several virtual machines, and let each machine exploit it's core?

Por que isso deveria ser algo melhor? Digamos que você esteja executando o Ubuntu em sua caixa e instale VMs com o Ubuntu: por que um Guest-Ubuntu deve se comportar de maneira diferente de uma instalação comum?

Os sistemas operacionais são criados para gerenciar recursos de maneira eficaz, portanto, executar tudo em uma instalação simples deve funcionar.

A virtualização é interessante se você planeja alternar facilmente instâncias / serviços; ou se você precisar de mais níveis de isolamento.

Mas, como é sua única caixa, você está bem com uma instalação simples.

OT: Por que usar o apache e o nginx?

    
por 28.05.2015 / 15:09