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: 13.422 ]

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

Implementando rotas estáticas no Linux com route

Monitoração de tráfego com MRTG

Instalação do Software de Monitoramento Zabbix

Venha pro lado de cá!

Criando pacotes no Slackware

  
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