Como criar uma estação de trabalho virtual do Linux com aceleração por GPU

Neste tutorial, mostramos como criar uma estação de trabalho virtual do Linux executando o CentOS com uma GPU compatível com exibição. Para criar uma estação de trabalho do Windows, consulte o tutorial Como criar uma estação de trabalho virtual Windows acelerada por GPU. O Google Cloud oferece três GPUs com funcionalidade de exibição: NVIDIA T4, NVIDIA Tesla P4 e NVIDIA Tesla P100.

Depois de criar a estação de trabalho virtual, você aprenderá como acessá-la remotamente usando PC-over-IP (PCoIP) da Teradici, um protocolo de área de trabalho remota amplamente utilizado no setor de mídia e entretenimento. O PCoIP oferece recursos essenciais para as cargas de trabalho de produção de mídia, como precisão de cores e compatibilidade com exibição sem perdas.

Objetivos

  • Criar uma instância do Compute Engine com uma GPU. A instância servirá como base para a estação de trabalho virtual.
  • Instalar os drivers da NVIDIA na estação de trabalho virtual.
  • Instalar o software Teradici Cloud Access na estação de trabalho virtual.
  • Conectar-se à estação de trabalho virtual a partir de um computador Mac ou Windows usando um cliente de software PCoIP ou o Zero Client, um tipo de endpoint de hardware. Para acessar a estação de trabalho virtual usando um computador Linux, entre em contato com um representante da Teradici.

Custos

Neste tutorial, o seguinte componente faturável do Google Cloud é usado:

Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto. Quando este artigo foi redigido, o custo aproximado da configuração típica de uma estação de trabalho de mídia, conforme mostrada neste tutorial, era de US$ 1,36 por hora.

Os recursos que compõem a estação de trabalho virtual e os fatores que afetam o custo neste tutorial são:

A saída da Internet representa dados que são transmitidos da estação de trabalho virtual para o cliente de exibição local, cobrados de acordo com as taxas de saída de Internet. As variáveis que afetam a saída de dados durante uma sessão de PCoIP são a largura de banda, a resolução da tela, o número de monitores de exibição, os aplicativos usados e o tipo de atividade em cada monitor. O custo do exemplo baseia-se no uso médio de 10 Mbps. Consulte o Workflow Planning Guide da Teradici para entender os diferentes requisitos de carga de trabalho.

Antes de começar

Neste tutorial, usamos os comandos gcloud e gsutil, que podem ser executados em uma instância do Cloud Shell iniciada no Console do Cloud. Se você quiser usar gcloud e gsutil na estação de trabalho local, instale o SDK do Cloud. O tutorial mostra como executar comandos no Cloud Shell. Se você usa o SDK do Cloud na estação de trabalho, ajuste as instruções de acordo.

  1. Faça login na sua conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do Cloud, na página do seletor de projetos, selecione ou crie um projeto do Cloud.

    Acessar a página do seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como confirmar se a cobrança está ativada para o seu projeto.

  4. Ative a API Compute Engine.

    Ative a API

Além disso, verifique se você tem:

  • um projeto do Google Cloud com cota para GPUs de estação de trabalho virtual na zona selecionada. É possível conseguir uma listagem da disponibilidade da GPU usando o comando gcloud compute accelerator-types list;
  • um navegador Google Chrome para acessar o Console do Cloud;
  • um Zero Client da Teradici ou o cliente de software da Teradici (links em inglês) mais recente para Windows, Mac ou Linux, que será usado para acessar a estação de trabalho virtual;
  • uma licença do Teradici Cloud Access Software. Inscreva-se nesta página em inglês para receber uma licença de avaliação ou entre em contato com seu representante da Teradici. Você receberá um código de registro de avaliação válido por 30 dias para usar na estação de trabalho virtual.

Noções básicas sobre a arquitetura

O diagrama a seguir mostra os componentes usados neste tutorial para implantar uma única estação de trabalho virtual. Os componentes opcionais mostrados no diagrama incluem maneiras diferentes de se conectar à estação de trabalho virtual, o armazenamento compartilhado e de objetos e uma instância extra para atender a licenças de terceiros.

Arquitetura de estação de trabalho virtual.

Como escolher um acelerador

Um fator importante ao implantar uma estação de trabalho virtual é a latência entre seu local e a instância criada. Quanto menor for a latência, melhor será a experiência. Portanto, trabalhe em uma zona geograficamente mais próxima de onde você está. Para saber mais sobre regiões e zonas, consulte Geografia e regiões.

  1. Abra o Cloud Shell. Se você estiver usando o SDK do Cloud, abra uma janela de terminal no computador.

    Acessar o Cloud Shell

  2. Receba a lista das zonas com GPUs disponíveis:

    gcloud compute accelerator-types list

    Anote o nome da zona que está fisicamente mais próxima de você.

  3. Defina a zona com que você quer trabalhar.

    gcloud config set compute/zone zone

    Substitua zone pelo nome da zona que você está usando, como us-west2-b.

Como escolher um tipo de máquina

É possível anexar GPUs P4 a qualquer tipo de máquina. No entanto, cada GPU adicionada a uma estação de trabalho virtual precisa ser acoplada a um número mínimo de vCPUs. Dessa forma, você evitará o excesso de assinaturas de qualquer recurso. Para o NVIDIA Tesla P4, é possível anexar até 24 vCPUs a 1 GPU. Para adicionar mais de 24 vCPUs à sua estação de trabalho virtual, você precisa adicionar uma GPU P4 extra a cada 24 vCPUs extras. Por exemplo, uma estação de trabalho virtual de 48 vCPUs exige que você anexe duas P4 GPUs.

O exemplo neste tutorial consiste em uma estação de trabalho virtual com 24 vCPUs, que é o número máximo de vCPUs permitido por GPU NVIDIA Tesla P4.

Como criar a estação de trabalho virtual

O Teradici Graphics Agent (que você instala posteriormente neste tutorial) requer a ativação do encaminhamento de IP e a permissão de tráfego do servidor HTTPS durante a criação da estação de trabalho virtual.

  1. No Cloud Shell, crie a instância da estação de trabalho virtual do Compute Engine. Você precisa informar valores para os marcadores, como name.

    gcloud compute instances create name \
        --machine-type machine-type \
        --accelerator type=accelerator,count=num-gpus \
        --can-ip-forward \
        --maintenance-policy "TERMINATE" \
        --tags "https-server" \
        --image-project centos-cloud \
        --image-family centos-7 \
        --boot-disk-size size

    Exemplo:

    gcloud compute instances create test-vws \
        --machine-type custom-24-32768 \
        --accelerator type=nvidia-tesla-p4-vws,count=1 \
        --can-ip-forward \
        --maintenance-policy "TERMINATE" \
        --tags "https-server" \
        --image-project centos-cloud \
        --image-family centos-7 \
        --boot-disk-size 100

    Após a criação da estação de trabalho virtual, será exibido o status da máquina. A saída será assim:

    Created https://www.googleapis.com/compute/v1/projects/project/zones/us-west2-b/instances/test-vws.
    NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS test-vws us-west2-b custom (24 vCPU, 32.00 GiB) 10.168.0.3 XX.XXX.XX.XXX RUNNING

    A estação de trabalho virtual é criada na rede VPC padrão do seu projeto. Se quiser criar a estação de trabalho virtual em uma rede VPC diferente, adicione a seguinte sinalização ao comando:

    --network=network
    

    Substitua network pelo nome da rede que será usada.

  2. Anote o endereço IP externo da estação de trabalho virtual. Você precisará usá-lo posteriormente neste tutorial.

Como fazer login na estação de trabalho virtual

Depois de criar a estação de trabalho virtual, faça o login na máquina para configurá-la.

  1. No Cloud Shell, conecte-se à nova estação de trabalho virtual:

    gcloud compute ssh test-vws
  2. Defina a senha da conta. O PCoIP da Teradici requer a definição de uma senha de usuário.

    sudo passwd `whoami`

    Quando solicitado, digite uma senha. Você usará essa senha posteriormente neste tutorial para fazer login na estação de trabalho virtual com o Teradici PCoIP Client.

Como instalar bibliotecas gráficas e um gerenciador de janelas

A imagem padrão do Google Cloud CentOS 7 é a instalação mínima do CentOS 7.x. A próxima etapa é instalar as bibliotecas necessárias para executar a estação de trabalho virtual como uma estação de trabalho gráfica. Neste tutorial, você também instalará o gerenciador de janelas do KDE.

  1. Instale os componentes necessários:

    sudo yum -y update
    sudo yum -y install kernel-devel
    sudo yum -y groupinstall "KDE desktop" "X Window System" "Fonts"
    sudo yum -y groupinstall "Development Tools"
    sudo yum -y groupinstall "Server with GUI"
  2. Reinicialize a estação de trabalho:

    sudo reboot

    A conexão com o Cloud Shell será encerrada.

Como instalar o driver da NVIDIA

As GPUs NVIDIA T4, NVIDIA Tesla P4 e NVIDIA Tesla P100 funcionam no Google Cloud somente com drivers de estação de trabalho virtual de data center (vWS) NVIDIA Quadro para cargas de trabalho de computação e exibição. É possível fazer o download desses drivers em um bucket de armazenamento público.

  1. Após a estação de trabalho virtual ser reiniciada, conecte-se novamente à ela usando o Cloud Shell:

    gcloud compute ssh test-vws
  2. Na estação de trabalho virtual, use gsutil para receber a listagem dos drivers mais recentes:

    gsutil ls gs://nvidia-drivers-us-public/GRID

    Neste tutorial, usamos os drivers gráficos mais recentes até a redação deste artigo: GRID8.0 para Linux (versão 418.70). O driver qualificado sempre aparece no diretório GRID com o número de versão mais elevado. Se você encontrar um driver ainda mais recente, use-o.

  3. Faça o download do driver e instale-o. Se você estiver usando uma versão do driver mais recente do que a 418.70, altere o comando de maneira apropriada.

    curl -O \
    https://storage.googleapis.com/nvidia-drivers-us-public/GRID/GRID8.0/NVIDIA-Linux-x86_64-418.70-grid.run
    sudo bash NVIDIA-Linux-x86_64-418.70-grid.run

    Durante a instalação do driver, talvez algumas solicitações apareçam:

    • Se você for solicitado a instalar binários de 32 bits, selecione Sim.
    • Caso você seja solicitado a modificar o arquivo x.org, selecione Não.
  4. Verifique se o driver está instalado e funcionando:

    nvidia-smi

    A resposta será assim:

    Thu Sep 20 21:58:23 2018
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 418.70       Driver Version: 418.70       CUDA Version: 10.1     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0  Tesla P4            On   | 00000000:00:04.0 Off |                    0 |
    | N/A   34C    P8     7W /  75W |      0MiB /  7611MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID   Type   Process name                             Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    

Se a saída não for semelhante à listagem acima, consulte a seção Solução de problemas mais adiante neste tutorial.

Como instalar o software Teradici Cloud Access

O Teradici Cloud Access Software fornece um agente gráfico que é executado na estação de trabalho virtual para providenciar a área de trabalho ao cliente de software ou hardware.

  1. Na estação de trabalho virtual, adicione o software da Teradici:

    sudo rpm --import https://downloads.teradici.com/rhel/teradici.pub.gpg
    sudo yum -y install wget
    sudo wget -O /etc/yum.repos.d/pcoip.repo \
        https://downloads.teradici.com/rhel/pcoip.repo
  2. Atualize os repositórios de software:

    sudo yum -y update
  3. Instale o Teradici Cloud Access Software:

    sudo yum -y install pcoip-agent-graphics
  4. Defina o estado de exibição como graphical:

    sudo systemctl set-default graphical.target
  5. Reinicialize a estação de trabalho virtual:

    sudo reboot

Registrar o Teradici Graphics Agent

Para usar o Teradici Graphics Agent, você precisa ter uma licença, conforme observado anteriormente no tutorial.

  1. No Cloud Shell, conecte-se novamente à estação de trabalho virtual:

    gcloud compute ssh test-vws
  2. Na estação de trabalho virtual, ative a licença do software Teradici Cloud Access:

    pcoip-register-host --registration-code=registration-code

Como criar uma regra de firewall

O cliente PCoIP se comunica com a estação de trabalho virtual usando várias portas. É necessário definir regras de firewall para permitir o tráfego de entrada e saída da estação de trabalho virtual.

  • No Cloud Shell, crie uma regra de firewall que abra as portas necessárias:

    gcloud compute firewall-rules create allow-teradici \
        --allow tcp:443,tcp:4172,udp:4172,tcp:60443

Como fazer login na estação de trabalho virtual usando o cliente PCoIP

  1. No computador local, acesse a seção PCoIP Clients (em inglês) na página de suporte da Teradici, faça o download e a instalação do aplicativo PCoIP Client para o sistema operacional e, em seguida, inicie-o.

  2. Selecione New Connection.

  3. No campo Host Address, insira o endereço IP externo da sua estação de trabalho virtual. Se quiser, insira um nome para a conexão.

    Como atribuir um endereço IP externo à estação de trabalho virtual.

  4. Depois de se conectar, autentique-se inserindo o nome de usuário e a senha que você criou para a estação de trabalho virtual.

    Autenticação na estação de trabalho virtual.

  5. Selecione a área de trabalho a ser executada e clique em Connect.

    Seleção de uma área de trabalho à qual conectar-se.

    Em alguns segundos, sua área de trabalho Linux aparecerá.

    Área de trabalho do Linux na estação de trabalho virtual.

Como testar a estação de trabalho virtual

Depois de implantar a estação de trabalho virtual, é possível testar o desempenho e a interatividade dela usando várias ferramentas:

  • Execute as ferramentas de comparativo de GPU, como glxgears ou glmark2 (links em inglês). Tratam-se de programas simples para testar o desempenho gráfico de uma estação de trabalho Linux.
  • Instale o Blender, um pacote de software 3D de código aberto.
  • Execute ferramentas de referência de renderizadores conhecidos, como V-Ray, Octane ou Maxon (links em inglês).
  • Instale o Google Chrome para navegar nos seus sites favoritos ou reproduzir vídeos do YouTube.

Solução de problemas

Esta seção lista os possíveis problemas ao configurar ou se conectar à estação de trabalho.

Falha na NVIDIA-SMI

Problema: ocorreu uma falha na NVIDIA-SMI porque não foi possível se comunicar com o driver da NVIDIA.

Solução: reinstale o driver e tente executar nvidia-smi novamente. Se o comando falhar de novo, desinstale o driver da NVIDIA, instale o módulo dkms (em inglês) e reinstale o driver. Essa ação registrará o módulo dkms no kernel. Assim, as atualizações do kernel não exigirão que o driver gráfico seja reinstalado.

X11 não inicia

Problema: o X11 não inicia conforme o esperado.

Solução: verifique se o driver gráfico Nouveau está presente em sua instalação. Os drivers Nouveau são drivers gráficos de código aberto incluídos em algumas versões do Linux. Para verificar se esse driver está presente, execute o comando a seguir no shell da estação de trabalho virtual:

lsmod | grep nouveau

Se houver algum resultado, siga as etapas abaixo para desativar o carregamento do driver Nouveau antes de instalar o driver gráfico qualificado da NVIDIA:

  1. Como o superusuário no shell da estação de trabalho virtual, abra um editor de texto e adicione o seguinte à última linha no arquivo /etc/modprobe.d/blacklist.conf:

    blacklist nouveau
  2. Reinicialize a estação de trabalho virtual:

    sudo reboot
  3. Quando a estação de trabalho virtual for reinicializada, conecte-se novamente a ela usando o Cloud Shell:

    gcloud compute ssh test-vws
  4. Como superusuário, edite o arquivo /etc/default/grub.

  5. Localize a entrada denominada GRUB_CMDLINE_LINUX ou inclua-a se não existir. Adicione o seguinte valor à entrada:

    rd.driver.blacklist=nouveau nouveau.modeset=0

    Esse valor precisa estar entre aspas. Exemplo:

    GRUB_CMDLINE_LINUX="crashkernel=auto console=ttyS0,38400n8 rd.driver.blacklist=nouveau nouveau.modeset=0"
  6. Gere uma nova configuração de grub para incluir as mudanças:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  7. Reinicialize a estação de trabalho virtual novamente:

    sudo reboot
  8. Após a estação de trabalho virtual ser reiniciada, conecte-se novamente à ela usando o Cloud Shell:

    gcloud compute ssh test-vws
  9. Confirme que o driver Nouveau não está mais presente:

    lsmod | grep nouveau

    A string em branco indica que o driver Nouveau não está instalado. Para saber mais informações sobre o driver Nouveau, consulte o capítulo Common Problems na documentação da NVIDIA.

Não é possível conectar-se à estação de trabalho virtual

Problema: mesmo usando o PCoIP Zero Client, não é possível conectar-se à estação de trabalho virtual.

Solução: verifique se a versão de firmware instalada do Zero Client é a 6.1 ou posterior antes de se conectar à estação de trabalho virtual. Para ver mais informações, entre em contato com o representante da Teradici.

Como fazer a limpeza

Para evitar que os recursos usados neste tutorial sejam cobrados na conta do Google Cloud Platform, faça o seguinte:

Depois de concluir o tutorial, limpe os recursos que você criou no Google Cloud para não ser cobrado por eles no futuro.

Interromper a estação de trabalho virtual

As estações de trabalho virtuais interrompidas geram cobranças pelo uso do disco permanente, mas podem ser reiniciadas a qualquer momento. Para interromper a estação de trabalho virtual, execute o comando a seguir no Cloud Shell:

gcloud compute instances stop test-vws

Exclua o projeto

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar a página "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir todos os componentes

  1. Exclua a estação de trabalho virtual.
  2. Exclua a regra de firewall.

A seguir