O documento compara o desempenho entre máquinas virtuais e containers, discutindo a história da virtualização e como containers oferecem maior densidade de recursos compartilhando o mesmo kernel, enquanto máquinas virtuais executam cópias separadas do kernel. Containers são mais adequados para nuvem devido à sua elasticidade e isolamento entre aplicações.
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
Comparação de Desempenho entre máquinas virtuais e containers - por Bruno Rodrigues
1. Proibida cópia ou divulgação sem permissão
escrita do CMG Brasil.
Comparação de Desempenho entre
máquinas virtuais e containers
Bruno Domingues
bruno.domingues@Intel.com
Intel Principal Architect
IEEE Chairman Computer Society - CN
2. História da Virtualização
• Logo depois da formação da VMWare, as empresas
“descobriram” a virtualização
• Virtualização foi muito alardeado em 2005, e o kernel do
Linux foi “forked” para acomodar o Xen
• Qualquer coisa que não fosse hypervisor não era
interessante para as empresas
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
3. Explorando as opções de virtualização
• Enquanto as empresas seguiam o caminho de adoção do
Hypervisor, as empresas de Hosting seguiam o caminho
dos containers
• Benefício primário era densidade:
– Containers pode suportar 3x mais densidade que hypervisors
– No mercado de hosting as margens são pequenas e densidade é a
diferença entre lucro e prejuízo
• Conforme o mercado de hosting foi adotando
massivamente conteiners, este se tornou mais sofisticado e
denso
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
4. A tecnologia de conteiners também foi
dividida
• Google viu as vantagens de containers bem cedo
• Eles contrataram Paul Manage (pessoa chave do cgroup) e
fizeram seu DC complemente baseado em containers
• Historicamente, Containers (OpenVZ) e cgroup evoluíram
de forma separada
– Essa evolução foi realizada principalmente fora da linha de
desenvolvimento principal do produto.
– Porém com a versão 3.9 todas as melhorias do OpenVZ e muitas
melhorias feitas pelo Google, agora fazem parte do produto.
• Em 2011 foi acordado em criar uma base comum para
permitir compatibilidade e 2015 o IEEE P2302, WG sobre
Intercloud está expandindo para especificar o padrão
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
5. Examinando Containers e Hypervisors
Containers
Container 1 Container 2 Container 3
Camada de Virtualização
Sistema Operacional
Hardware
Hypervisor
VM 1 VM 2 VM 3
Camada de Virtualização
Drivers que suportam SO
Hardware
Guest
OS
Guest
OS
Guest
OS
Hypervisor
Contnainers
• Compartilham o mesmo kernel
• Comunicação com o host usando
chamadas padrão de sistemas
(System Calls)
Hypervisors
• Executa copias separadas do kernel
• Comunicam com o host através
máquina virtual emulada
6. Diferenças na abstração
• Hypervisor possui abstração no nível do hardware
– Significa que qualquer coisa que você consegue fazer com
hardware, você consegue fazer com o hypervisor
– O que é difícil fazer com o hardware, também é difícil fazer com o
hypervisor, como é o caso de remover memória a quente
– Também significa que você precise de um segundo sistemas
operacional para rodar dentro da máquina virtual
• Containers prove abstração no nível do kernel do SO
– Tudo o que você faz com o OS você consegue fazer com o
container
– Gerenciamento e recursos se torna algo fácil porque o sistemas
operacional já faz isso.
– Pode rodar diferentes sistemas operacionais desde que usem o
mesmo kernel
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
7. Perspectivas de Containers
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
‡ Source: Containers and the Cloud, James Bottomley, Parallels CTO, LinuxCon Europe 2013
8. Porque os Containers são mais densos?
• Parcialmente é uma simples questão de matemática para
recursos
– Containers executam apenas um kernel por sistema físico
– Hypervisors executam um kernel por virtual machine (mais um
para o host)
• Também está relacionado com melhor gerenciamento
– Um único kernel no Container tem total visibilidade dos recursos
usados no sistema completo (incluindo o que cada container está
fazendo)
– Hypervisors precisam criar mecanismos para comunicação dos
multiplex kernels para informar ao host o que está acontecendo
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
9. Características de Containers
• Containers tendem a serem mais elásticos que Hypervisors
– Desde que o kernel já tenha inicializado, mesmo com um sistemas
operacional diferente (compartilhando o mesmo kernel) seguindo
toda a sequencia de boot, ainda é muito mais rápido do que
inicializando todo o kernel desde o inicio;
– Se estiver usando o mesmo sistema operacional (mesma versão de
Linux) então o boot é instantâneo e pode-se apenas iniciar as
aplicações
– Escalabilidade vertical (para cima ou baixo) basta habilitar
controle do cgroup
– Migração é mais rápido devido a quantidade de dados transferido
ser muito menor.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
10. Containers e a Cloud
• O principal requisito de cloud é
– Elasticidade
– Densidade
• A maior desvantagem dos Containers
– Todas as instâncias precisam ser homogêneas
– Não é possível rodar diferente versões de kernels (ou de
sistemas operacionais)
• O maior problema de PaaS e SaaS é garantir o isolamento
entre diferentes usuários.
– Este é um problema que Containers têm sido usado por anos para
resolver, e.g. Gmail.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
11. Containers de Aplicações
• Containers não virtualize apenas no
nível do userspace do sistema
operacional
• Containers pode virtualizar qualquer
grupo de processos
• Containers pode inclusive isolar
grupos de processos que
compartilham recursos
• Tornando uma excelente alternativa
para PaaS/SaaS
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Kernel
Userspace
Bibliotecas
Container
MySQL
Apache
12. Porque não estamos usando Containers?
• A transição ocorreu primariamente para IaaS
• Até a versão 3.9, não havia isolamento suficiente.
• Conforme o marcado move em direção a PaaS/SaaS e
outras aplicações baseadas em nuvem, Containers passa a
ser uma opção mais interessante.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Referências:
• Google Containers: https://github.com/google/lmctfy
• OpenVZ: http://openvz.org/Main_Page
• Linux-VServer: http://linux-vserver.org
• libvirt-lxc: http://libvirt.org/drvlxc.html
• Docker Public Registry: https://index.docker.io