sábado, 13 de junho de 2009

Xen e o kernel Linux

Pra quem não conhece, Xen é um VMM (Virtual Machine Monitor) open source, criado em 2003. Seu principal mote é a utilização de para-virtualização, na qual o sistema operacional tem conhecimento de estar executando em um ambiente virtual e não sobre o hardware. Essa abordagem, apesar de ser eficiente, exige modificações no sistema operacional. Como nem sempre isso é possível, como no caso de Sistemas de código fechado (Windows, MacOS, etc), em 2006 foi adicionado o suporte a virtualização total através de auxílio da CPU (AMD-V e Intel VT-x).

Um dos problemas no modelo empregado pela XenSource (adquirida pela Citrix em 2007) é que a base para todas as versões 3.x do Xen é o kernel Linux 2.6.18, que foi lançado em 2006. Como o kernel é a base do sistema e inclui os drivers de dispositivos, as distribuições Linux tentam na medida do possível utilizar o kernel mais recente possível, a fim de desfrutar de melhor suporte a hardware e melhorias de desempenho trazidas pelas novas versões.

Como o suporte a Xen é desenvolvido sobre o kernel 2.6.18 (a versão atual é a 2.6.30), é necessário um trabalho por parte das distribuições para trazer o suporte a Xen para a versão do kernel utilizada, uma técnica conhecida como forward port. Esse tipo de trabalho começa a se tornar cansativo (portar o Xen para cada nova versão do kernel) e trabalhoso, pois com a evolução do kernel, aplicar as alterações torna-se mais complexo e muitas vezes conflita com novos recursos adicionados. Isso levou várias distribuições a abandonarem o suporte a Xen, como pro exemplo o Fedora, que só oferece suporte até a versão 8 (lançada no final de 2007).

É preciso explicar que existem dois suportes necessários para o Xen: o suporte a dom0 (VM privilegiada com acesso direto a hardware) e a domU (VMs convencionais, confinadas ao ambiente virtual). O suporte a domU está disponível através da paravirt_ops, uma infrastrutura padrão do kernel que permite adotar paravirtualização, já utilizada pelo VMI da VMware e pelo projeto KVM. O suporte a dom0 no kernel ainda enfrenta resistências. Esse suporte é essencial, pois é através do dom0 que o Xen tem acesso ao hardware.

A principal questão é a forma como querem que a inclusão seja feita. Ao invés de criar algo estanque, que possa ser adicionado sem alterar o restante do kernel, as modificações propostas envolvem alterar diversas partes do kernel, com grande possibilidade de causar problemas ou acabar dificultando a manutenção e evolução nessas áreas. O KVM (Kernel Virtual Machine), incluído no kernel 2.6.20, não exigiu alterações em outras áreas do kernel. O próprio Linus Torvalds já se posicionou contrário à inclusão do suporte na forma como foi proposto:
"The fact is (and this is a _fact_): Xen is a total mess from a development standpoint. I talked about this in private with Jeremy. Xen pollutes the architecture code in ways that NO OTHER subsystem does. And I have never EVER seen the Xen developers really acknowledge that and try to fix it.

Thomas pointed to patches that add _explicitly_ Xen-related special cases that aren't even trying to make sense. See the local apic thing."
"If it was just the local APIC, fine. But it may be just the local APIC code this time around, next time it will be something else. It's been TLB, it's been entry_*.S, it's been all over. Some of them are performance issues."
"Xen has been painful. If you give maintainers pain, don't expect them to love you or respect you.

So I would really suggest that Xen people should look at _why_ they are giving maintainers so much pain."
A mensagem na íntegra, bem como toda a discussão sobre o tema, pode ser vista AQUI.

Em virtude dessas questões, em conjunto com as iniciativas de várias distribuições priorizarem o KVM como plataforma de virtualização (a Red Hat adquiriu a empresa idealizadora do KVM em 2008, e pretende adicionar suporte completo a ele no RHEL 5.4, a ser lançado em agosto. A Canonical (Ubuntu) e o Debian também estão oferecendo suporte ao KVM em suas últimas versões), há uma tendência do abandono gradual do Xen. Some a isso o fato das principais empresas apoiando-o atualmente (Citrix e Novell) terem grande parte de suas receitas associadas à Microsoft, que posicionou seu Hyper-V como concorrente ao Xen e às soluções da VMware. Outra questão é o suporte em hardware a virtualização, que já possibilita desempenho próximo ao da para-virtualização, além de suporte a paravirtualização transparente já empregado pelo KVM e pelo VMI da VMware, que oferecem ganhos de desempenho sem a complexidade exigida pelo Xen. O Xen é um grande projeto, com várias idéias inovadoras, mas que lentamente vem perdendo apoio do mercado e dos desenvolvedores, sendo suplantado pela evolução do hardware.

Nenhum comentário:

Postar um comentário