Intel GVT-g: compartilhando a GPU Intel com convidados QEMU/KVM

O artigo tem como objetivo explicar e orientar a respeito da tecnologia Intel GVT-g (iGVT-g), que permite passar a GPU Intel para vários convidados KVM e Xen enquanto mantendo-a disponível para o hospedeiro. O foco está em configurar convidados KVM, os quais eu configurei e uso com sucesso. É descrito o que é a tecnologia iGVT-g e seus possíveis usos, é dada uma explicação das configurações necessárias no hospedeiro para obter um bom desempenho e manter o sistema estável, é explicado como configurar convidados Linux, com foco no Xubuntu 18.04, e Windows 10. Por fim, há resultados de benchmarks comparando o hospedeiro e o convidado usando iGVT-g.

[ Hits: 12.677 ]

Por: FurretUber em 24/07/2018


dma-buf e sua importância



dma-buf é como se fosse uma tela virtual, onde o convidado pode exibir a imagem como se ele estivesse conectado a um monitor físico. O uso é bem simples: exibir a tela do convidado em uma janela no hospedeiro.

É importante saber que não é necessário utilizar o dma-buf para os convidados. Isso é opcional. No entanto, sem o dma-buf, para poder visualizar a tela do convidado será preciso usar algum protocolo como o VNC ou RDP, que podem não ser suficientes dependendo do tipo de uso que será feito do sistema convidado.

Exemplos: caso o convidado será um servidor sem interface gráfica para codificação de mídia, SSH é o suficiente. Caso ele tenha uma interface gráfica mas os vídeos não são intensos e a latência não é crítica, VNC ou RDP podem ser suficientes. Caso o convidado seja utilizado para CAD ou para jogos, onde as ineficiências dos protocolos remotos podem causar perda de produtividade ou de partidas, dma-buf é a melhor opção.

Há mais de uma interface pela qual é possível utilizar o dma-buf:
  • Spice - Utiliza o protocolo Spice para exibir a tela;
  • GTK - Cria uma janela GTK, padrão do QEMU;
  • VNC - Utiliza o protocolo VNC para exibir a tela;
  • Libvirt - Utiliza o Spice também, mas pode ser gerenciado através do virt-manager.

Não há recomendações específicas, mas como as demais opções são protocolos remotos, a interface GTK foi a que se mostrou mais rápida, sendo limitada pelo gerenciador de janelas do hospedeiro: percebeu-se significativa redução no desempenho do convidado ao desativar a composição de tela no hospedeiro (xfwm4). Há vantagens interessantes ao utilizar Spice, como copiar e colar e arrastar e soltar (dependentes de drivers) que podem fazer o Spice ser a melhor opção. O melhor é testar cada uma.

QEMU

Caso se tenha chegado à conclusão de que será necessário utilizar o dma-buf, será preciso construir o QEMU do código fonte. Isso acontece porque o QEMU disponibilizado no Ubuntu 18.04 não possui as configurações necessárias para acelerar o vídeo, nem usando Spice, VNC ou GTK. Nesse caso, só seria possível criar convidados que não utilizam o dma-buf.

Para construir o QEMU capaz de usar dma-buf, é preciso baixar o código fonte e configurá-lo. A partir da versão 2.10 estável já deve ser possível construir o QEMU com as opções necessárias, para os corajosos há o Git, mas é melhor usar a versão 2.12 por ser a versão estável mais recente. Há várias dependências que precisam ser instaladas. No caso de uma instalação limpa do Xubuntu 18.04, as dependências podem ser instaladas através do seguinte comando:

sudo apt install gcc pkg-config zlib1g-dev libgtk-3-dev libgtk-3-dev libsdl2-dev libjpeg-turbo8-dev libbluetooth-dev libsasl2-dev libepoxy-dev libdrm-dev libgbm-dev libspice-server-dev libusb-dev libusb-1.0-0-dev libusbredirhost-dev

São muitos pacotes mesmo. Um exemplo para construir a versão 2.12 do QEMU com as opções necessárias é:

wget -c -t 0 https://download.qemu.org/qemu-2.12.0.tar.xz
$ tar xf qemu-2.12.0.tar.xz
$ cd qemu-2.12.0
$ ./configure --target-list=x86_64-softmmu --audio-drv-list=pa,alsa,sdl
--prefix=$HOME/qemu-2.12-build --enable-opengl --enable-gtk
--enable-sdl --enable-libusb --enable-bluez --enable-kvm --enable-spice
--enable-vnc --enable-vnc-png --enable-vnc-jpeg --enable-vnc-sasl
--enable-membarrier --enable-vhost-net --enable-usb-redir
$ make -j `nproc`
$ make install


Provavelmente será necessário trocar o local de instalação. A opção --enable-membarrier não existe nas versões anteriores à 2.12. Pode ser que o configure falhe por determinadas bibliotecas de desenvolvimentos não estarem instaladas, o componente faltante é especificado na mensagem de erro. Instale a(s) biblioteca(s) faltante(s) e repita o uso do configure.

Uma vez com o QEMU pronto, pode-se configurar o convidado.

Página anterior     Próxima página

Páginas do artigo
   1. O que é Intel GVT-g
   2. dma-buf e sua importância
   3. Preparando o convidado Linux sem dma-buf
   4. Preparando o convidado Linux com dma-buf
   5. Preparando o convidado Windows
   6. Observações adicionais, resultados obtidos e referências
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

OpenNebula - Gerenciamento de nuvens privadas e públicas

Wine, Steam e programas do Windows, no Linux

DD-WRT no D-Link Dir-300 Rev A

Desenvolvendo um servidor DNS no CentOS

Instalação e configuração do MySQL 4.0.26, Apache 2.0.54, PHP 5.0.4 e PHP-Nuke 7.8 no Slackware 10.1

  
Comentários
[1] Comentário enviado por betin93 em 07/08/2018 - 16:17h

Belo artigo, com um passo a passo fantastíco. Me lembrei da minha luta para compartilhar a minha placa de vídeo pelo KVM com o GPU Passtrough aheuaehaeu.

Evoluir significa enxergar além do horizonte.

[2] Comentário enviado por edps em 19/08/2018 - 11:10h

Também gostei muito deste artigo, a começar por ser bastante detalhado.

Notei também que o openSUSE Leap 15 é uma distribuição onde tudo está OK quanto aos passos iniciais propostos aqui, então, acho que bastará apenas adicionar as entradas sugeridas em /etc/default/grub e instalar o driver xf86-video-intel.

Muchas gracias.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts