Atenção: esse artigo tem um vídeo complementar. Clique e assista!
Quando os primeiros computadores pessoais entraram no cotidiano das pessoas, o número de aplicativos era bastante limitado. O que normalmente se usava era um editor de textos e, talvez, uma planilha eletrônica. Isso funcionava com o suporte de um sistema operacional (SO) que gerenciava os recursos da máquina – processador, memória e dispositivos de entrada e saída.
Atualmente, o próprio usuário se tornou multitarefa. Em outras palavras, independente de estar usando um notebook, um tablet ou mesmo um celular, o usuário deseja manter uma série de aplicações em execução ao mesmo tempo.
Aliás, com o crescimento dos serviços disponíveis na World Wide Web nos últimos anos – o que se convencionou chamar de cloud computing ou computação em nuvem – os navegadores acabaram assumindo a função de aplicativos multifuncionais, embutindo outras aplicações dentro de si. Com essa quantidade de programas exigindo processamento, somado a um sistema operacional que precisa gerenciar vários recursos, um único processador ficaria sobrecarregado, por mais rápido que seja.
Do ponto de vista dos serviços disponíveis na nuvem, a situação é ainda mais complexa. Nesse caso, são necessários equipamentos muito mais robustos, capazes de realizar um processamento de alto desempenho e assim prover serviços de qualidade.
Contudo, a tecnologia para criar processadores mais rápidos para atender essa demanda de processamento está próxima de um limite imposto por vários fatores. Entre eles o consumo de energia para atingir velocidades de processamento mais altas e a dissipação térmica decorrente desse consumo. Sendo assim, ao invés de aumentar a velocidade de um processador, por que não aumentar o número de núcleos dos processadores?
Os processadores com dois, quatro, oito ou mais núcleos são chamados multicore (ou multinúcleo). Com esse acréscimo no número de núcleos, é possível ter mais programas sendo executados simultaneamente ou ter programas que utilizam dois ou mais núcleos ao mesmo tempo, tornando-os mais rápidos, sem aumentar muito o consumo ou a dissipação térmica. Isso se chama de supercomputação ou processamento de alto desempenho.
Supercomputação como suporte à virtualização
A virtualização é uma estratégia que permite a criação de ambientes virtuais de processamento. Esses ambientes podem conter um SO específico, um dispositivo de armazenamento virtual e um espaço de endereçamento (memória RAM) próprio, além de poder compartilhar sistemas de entrada e saída como recursos de redes de computadores, por exemplo. Geralmente um ambiente virtual contém uma ou mais aplicações ou serviços que dependem de uma configuração específica. Cada um desses ambientes virtuais é emulado por uma máquina virtual que, por sua vez, é vista pelo SO como um processo comum. A Figura 1 ilustra uma modalidade de relação entre o hardware, o sistema operacional, as aplicações e as máquinas virtuais.
Figura 1. Relação entre os diversos componentes em um sistema com virtualização.
Outra modalidade possível é ter um hypervisor – ou gerenciador de máquinas virtuais – que possui uma relação direta com o hardware, sem interferência de nenhum sistema operacional. Nesse caso, os diversos ambientes virtuais são gerenciados pelo hypervisor e não mais por um sistema operacional específico.
Os sistemas de virtualização muito se beneficiam do hardware com processadores multicore. A razão para isso é que os processadores modernos com esta tecnologia permitem o particionamento dos diversos recursos computacionais – especialmente memória e núcleos de processamento – entre os diferentes processos. No entanto, para obter esses benefícios, é importante que o sistema operacional hospedeiro (host) – aquele sobre o qual as várias máquinas virtuais serão executadas – providencie o suporte adequado. Esse suporte deve incluir balanceamento de carga de processamento eficiente entre os diversos núcleos, mecanismos de particionamento e proteção de segmentos de memória, políticas de memória virtual compatíveis com as necessidades de cada máquina virtual, e compartilhamento e gerenciamento dos dispositivos de entrada e saída.
Prós e contras da virtualização com supercomputação
A virtualização tem muitas vantagens a seu favor, mas também há desvantagens a considerar. Entre as vantagens da virtualização, estão os aspectos a seguir:
· Redução de custos na aquisição de hardware, pois se evita adquirir equipamentos diferentes para implementar os diversos servidores. Nesse caso, um único hardware mais robusto pode substituir vários outros com menor robustez;
· Aproveitamento eficiente do hardware, uma vez que haverá mais serviços implementados nas diversas máquinas virtuais executadas sobre um único equipamento;
· Redução do consumo de energia e da necessidade de refrigeração, visto que serão necessários menos equipamentos para executar os diversos servidores embutidos nas máquinas virtuais;
· Melhor utilização do espaço físico, pois em um único hardware pode-se ter várias máquinas virtuais em funcionamento;
· Segurança na recuperação de falhas e acidentes, pois é possível criar “imagens” das máquinas virtuais em dispositivos de armazenamento secundário (CDs ou DVDs). As “imagens” são cópias das máquinas virtuais com suas respectivas configurações. Essas cópias permitem a rápida recuperação de uma máquina virtual.
No entanto, há contrapontos a considerar. São eles:
· Ponto único de falha, visto que quando há falhas no hardware sobre o qual as diversas máquinas virtuais estão em execução, todas essas máquinas falham ao mesmo tempo. O sistema operacional hospedeiro também pode falhar, prejudicando as diversas máquinas ao mesmo tempo;
· Demanda por máquinas muito potentes, pois é importante observar que o poder de processamento do equipamento real vai ser dividido entre as diversas máquinas virtuais;
· Nem todas as aplicações podem ser executadas em máquinas virtuais, pois demandam acesso direto a instruções específicas do processador, algo que não pode ser emulado pelas máquinas virtuais;
· Há questões relativas aos custos das licenças de software, pois, em alguns casos, o modelo de licença varia em função do número de núcleos de processamento do sistema como um todo. Portanto, apesar da aplicação usar uma fração do número de núcleos, o custo da licença pode ser calculado com base no número total de cores do processador.
Alguns dos sistemas de virtualização mais comuns
São muitos os sistemas de virtualização. Citar todos esses sistemas seria inviável. No entanto, a Tabela 1 mostra uma compilação dos sistemas de virtualização mais comuns baseados em arquiteturas x86-64 bits. É importante destacar que alguns sistemas que aparecem na Tabela 1 usam licença GPL (GNU General Public License) para software livre.
Sistema |
Fabricante |
SO Hospedeiro |
SO da máquina virtual |
Licença |
Hyper-V |
Microsoft |
Windows 2008 |
Linux, Windows e suas diferentes versões |
Proprietário |
KVM |
Qumranet |
Linux. |
Linux |
GPL versão 2 |
Virtual Box |
Oracle |
Windows, Linux, Mac OSX x86 |
Linux, Mac OSX, Solaris, Windows |
GPL versão 2 |
VMware e seus diversos subsistemas |
VMware |
Windows, Linux |
Linux, Mac OSX, Solaris, Windows |
Proprietário |
Xen |
XenSource |
NetBSD, Linux, Solaris |
FreeBSD, NetBSD, Linux, Solaris, Windows XP e 2003 Server |
GPL |
Tabela 1. Sistemas de virtualização mais comuns na arquitetura x86 - 64 bits.
Conclusão
A virtualização como técnica para melhor aproveitamento do poder computacional disponível não é recente. Começou em meados da década de 1960 com o IBM CP-40. Anos depois, na década de 1990, a IBM desenvolveu o conceito de particionamento lógico (LPAR), no qual o hardware do computador pode ser dividido entre vários processos, onde conjuntos redundantes de dispositivos (núcleos e memória cache, por exemplo) são distribuídos entre processos distintos.
No entanto, é a partir do desenvolvimento da tecnologia multicore que a virtualização pode atingir o seu melhor momento. Com o suporte de um equipamento produzido para multiplicar o poder computacional, apesar de fatores limitantes como consumo de energia, dissipação térmica e compartilhamento de recursos, sistemas virtualizados podem atingir desempenho além do satisfatório.
Artigo
“Virtualization on Multicore for Industrial Real-Time Operating Systems”, escrito
por Chris Main.
http://ieeexplore.ieee.org
Artigo “Virtualization
Shootout: VMware Server vs. VirtualBox vs. KVM”, escrito por Bill Childers.
www.linuxjournal.com/magazine/virtualization-shootout-vmware-server-vs-virutalbox-vs-kvm
Site do sistema
Microsoft Hyper-V Server.
http://www.microsoft.com/brasil/hyper-v-server
Site do sistema
KVM – Kernel-based Virtual Machine.
http://www.linux-kvm.org
Site do sistema
Virtual Box.
http://www.virtualbox.org
Site da Empresa
VMware.
http://www.vmware.com
Site do sistema
Xen.
http://xen.org