Na era da com­pu­ta­ção em nuvem, hi­per­vi­so­res como KVM e Xen são ab­so­lu­ta­mente es­sen­ci­ais. Em que estas tec­no­lo­gias de vir­tu­a­li­za­ção diferem? Nesta com­pa­ra­ção entre Xen e KVM, abordamos as se­me­lhan­ças e par­ti­cu­la­ri­da­des de cada uma.

Resumo do hi­per­vi­sor Xen

O hi­per­vi­sor Xen é um software de vir­tu­a­li­za­ção de código aberto que permite executar si­mul­ta­ne­a­mente vários sistemas ope­ra­ti­vos con­vi­da­dos no mesmo com­pu­ta­dor anfitrião. O hi­per­vi­sor Xen é res­pon­sá­vel por dis­tri­buir os recursos de hardware do com­pu­ta­dor anfitrião.

Que tipo de hi­per­vi­sor é o Xen?

O Xen, um hi­per­vi­sor de tipo 1 ou bare-metal, é instalado di­re­ta­mente no sistema físico. Ele comunica-se com o hardware através dos seus próprios con­tro­la­do­res. Os sistemas host e guest são ins­ta­la­dos sobre o hi­per­vi­sor Xen. O Xen atribui os sistemas ope­ra­ci­o­nais ins­ta­la­dos aos domínios dom0 e domU para dis­tin­guir entre níveis de pri­vi­lé­gio. O sistema operativo anfitrião pertence ao dom0 e, portanto, desfruta do nível mais alto de pri­vi­lé­gio. Todos os sistemas ope­ra­ti­vos con­vi­da­dos fazem parte do domU, como sistemas sem pri­vi­lé­gios, ou un­pri­vi­le­ged.

No entanto, o sistema operativo anfitrião e o hardware não comunicam di­re­ta­mente através dos con­tro­la­do­res do sistema operativo, mas sim através de uma API especial do Xen por meio do hi­per­vi­sor. A in­te­gra­ção profunda do hi­per­vi­sor Xen garante uma uti­li­za­ção mais eficiente do hardware, com menos so­bre­carga e uma menor su­per­fí­cie de ataque.

Xen: maior efi­ci­ên­cia graças à pa­ra­vir­tu­a­li­za­ção

O Xen utiliza a pa­ra­vir­tu­a­li­za­ção para aumentar a efi­ci­ên­cia. Neste caso, o hi­per­vi­sor não emula os com­po­nen­tes de hardware, pelo que o sistema anfitrião sabe que está a ser executado num ambiente vir­tu­a­li­zado. Desta forma, a co­mu­ni­ca­ção entre os sistemas ope­ra­ti­vos an­fi­triões e o hi­per­vi­sor Xen ocorre mais ra­pi­da­mente, o que aumenta o de­sem­pe­nho. No entanto, esta técnica tem exi­gên­cias especiais para os sistemas ope­ra­ti­vos ins­ta­la­dos no Xen, entre as quais se encontram que o núcleo do sistema operativo suporte a pa­ra­vir­tu­a­li­za­ção ou que existam con­tro­la­do­res es­pe­ci­a­li­za­dos. De qualquer forma, há anos que os núcleos dos sistemas ope­ra­ti­vos típicos, como Linux e BSD, já cumprem estes re­qui­si­tos.

Se não for possível ou desejável pa­ra­vir­tu­a­li­zar o sistema operativo, o Xen também suporta uma vir­tu­a­li­za­ção completa, na qual os com­po­nen­tes de hardware são emulados vir­tu­al­mente. Esta opção torna a vir­tu­a­li­za­ção mais lenta, mas oferece maior com­pa­ti­bi­li­dade. Assim, também é possível executar no Xen sistemas ope­ra­ti­vos que não permitem a pa­ra­vir­tu­a­li­za­ção.

Ca­rac­te­rís­ti­cas do hi­per­vi­sor KVM

KVM (do inglês Kernel-based Virtual Machine) é outro hi­per­vi­sor de código aberto com o qual é possível executar vários sistemas ope­ra­ti­vos con­vi­da­dos num único com­pu­ta­dor físico. Embora, em princípio, o KVM e o Xen tenham a mesma fi­na­li­dade, eles baseiam-se em prin­cí­pios de fun­ci­o­na­mento di­fe­ren­tes e, portanto, são ideais para casos de uso distintos.

Que tipo de hi­per­vi­sor é o KVM?

No passado, o KVM costumava ser clas­si­fi­cado como um hi­per­vi­sor do tipo 2, pois só conseguia comunicar com o hardware através dos con­tro­la­do­res do sistema operativo do host. Também não permitia a pa­ra­vir­tu­a­li­za­ção, e todos os com­po­nen­tes de hardware do sistema hos­pe­deiro tinham de ser emulados pelo KVM.

Desde então, o KVM adicionou a função de pa­ra­vir­tu­a­li­za­ção, embora funcione de maneira diferente do Xen, pois no KVM não é instalado no sistema operativo anfitrião. Em vez disso, o KVM integra-se di­re­ta­mente no núcleo do Linux e utiliza os com­po­nen­tes de software do sistema Linux para ad­mi­nis­trar os sistemas vir­tu­a­li­za­dos e os seus processos. No KVM, cada sistema operativo convidado tem o seu próprio hardware vir­tu­a­li­zado, incluindo interface de rede, ar­ma­ze­na­mento em disco rígido, etc. Para acelerar essa vir­tu­a­li­za­ção total, o KVM utiliza a Vir­tu­a­li­za­ção Assistida por Hardware, já integrada na maioria dos pro­ces­sa­do­res modernos.

No entanto, com o KVM, nem todos os com­po­nen­tes são to­tal­mente vir­tu­a­li­za­dos. Para acelerar os sistemas e apli­ca­ções, ele oferece algumas in­ter­fa­ces pa­ra­vir­tu­a­li­za­das que podem se comunicar di­re­ta­mente com o hi­per­vi­sor através da API Virtio. Portanto, a pa­ra­vir­tu­a­li­za­ção no KVM é oferecida prin­ci­pal­mente para dis­po­si­ti­vos de entrada e saída, como in­ter­fa­ces de rede, de modo que este hi­per­vi­sor fornece mais uma pa­ra­vir­tu­a­li­za­ção parcial.

KVM vs. Xen: qual hi­per­vi­sor tem melhor de­sem­pe­nho?

A principal diferença entre esses dois hi­per­vi­so­res é o nível do conjunto de software em que operam. Como parte do núcleo Linux, o KVM utiliza vir­tu­a­li­za­ção assistida por hardware para vir­tu­a­li­zar to­tal­mente muitos com­po­nen­tes de hardware sem pre­ju­di­car sig­ni­fi­ca­ti­va­mente o de­sem­pe­nho. As in­ter­fa­ces IO mais im­por­tan­tes são pa­ra­vir­tu­a­li­za­das; esse é pro­va­vel­mente o fator mais im­por­tante para a maioria das apli­ca­ções de servidor. Por sua vez, o Xen é instalado de forma clássica como hi­per­vi­sor de tipo 1 no sistema operativo cor­res­pon­dente. É o próprio hi­per­vi­sor que se encarrega de dis­tri­buir os recursos de hardware, o que garante que o Xen possa, em teoria, oferecer uma co­mu­ni­ca­ção mais eficiente e com maior de­sem­pe­nho com o hardware. No entanto, o Xen e o KVM têm um de­sem­pe­nho se­me­lhante graças ao con­tro­la­dor Virtio do KVM e à vir­tu­a­li­za­ção assistida por hardware.

Fixação da CPU

Evi­den­te­mente, os dois hi­per­vi­so­res não funcionam da mesma forma com todas as apli­ca­ções. O KVM oferece aos seus uti­li­za­do­res mais potência do que o Xen, es­pe­ci­al­mente no que diz respeito ao CPU Pinning. Graças à afinidade do pro­ces­sa­dor, o KVM pode atribuir um pro­ces­sa­dor físico (ou núcleo do pro­ces­sa­dor) a um pro­ces­sa­dor vir­tu­a­li­zado para que apenas o sistema virtual possa usar o pro­ces­sa­dor. Isso é es­pe­ci­al­mente vantajoso para apli­ca­ções que consomem muita CPU e só é possível com o KVM.

De­sem­pe­nho da rede

Em termos de de­sem­pe­nho de rede, o Xen leva vantagem. Embora ambos os hi­per­vi­so­res ofereçam in­ter­fa­ces de rede pa­ra­vir­tu­a­li­za­das, no KVM cada sistema vir­tu­a­li­zado tem o seu próprio dis­po­si­tivo de rede. No Xen, todos os sistemas hos­pe­dei­ros partilham uma única interface de rede virtual, o que garante uma melhor efi­ci­ên­cia.

Conclusão

Para saber qual hi­per­vi­sor é melhor, se o Xen ou o KVM, deve pensar nas suas ne­ces­si­da­des. O KVM costuma ser mais fácil de usar, pois além de ser líder de mercado, integra-se ao núcleo do Linux e permite a vir­tu­a­li­za­ção completa. O Xen oferece, em princípio, um de­sem­pe­nho superior graças à pa­ra­vir­tu­a­li­za­ção completa. Portanto, tudo depende das apli­ca­ções que deseja vir­tu­a­li­zar e do seu nível de ex­pe­ri­ên­cia.

Ir para o menu principal