Todos os produtos
Search
Central de documentação

Elastic Compute Service:Use the VFIO driver instead of the UIO driver

Última atualização: Jul 03, 2026

Substitua o driver UIO pelo driver VFIO em instâncias ECS e ECS Bare Metal Instance (EBM) para corrigir erros de runtime do DPDK.

Pré-requisitos

  • As Huge pages estão configuradas na instância.

  • O DPDK está instalado na instância.

Contexto

Aplicações DPDK em tipos de instância de sexta geração (como g6, c6 e r6) ou posteriores podem apresentar erros de runtime. Por exemplo, o pktgen-dpdk pode falhar ao detectar a NIC associada ao driver igb_uio. Caso observe o erro abaixo, substitua o driver UIO pelo driver VFIO.

EAL: eal_parse_sysfs_value(): cannot open sysfs value /sys/bus/pci/devices/0000:00:06.0/uio/uio0/portio/port0/start

Procedimento

  1. Conecte-se à sua instância ECS ou EBM. Consulte Fazer login em uma instância Linux usando o Workbench.

  2. Verifique a configuração do GRUB.

    cat /proc/cmdline
    • Se a saída incluir intel_iommu=on, mas não contiver iommu=pt, pule para a Etapa 4.

    • Caso contrário, acesse a Etapa 3 para adicionar o parâmetro.

      No exemplo a seguir, a saída não inclui nem intel_iommu=on nem iommu=pt. Portanto, adicione intel_iommu=on.

      image.png

  3. Adicione intel_iommu=on ao arquivo /etc/default/grub.

    1. Abra o arquivo.

      sudo vim /etc/default/grub
    2. Pressione i para entrar no modo de inserção. Adicione intel_iommu=on ao parâmetro GRUB_CMDLINE_LINUX. Salve e feche o arquivo.

      Exemplo da configuração modificada:grub-config

    3. Aplique a configuração.

      sudo grub2-mkconfig -o /boot/grub2/grub.cfg

      image.png

    4. Reinicie a instância e reconecte-se após a inicialização.

      reboot
      Aviso

      A reinicialização interrompe a instância por um curto período e pode afetar serviços em execução. Recomendamos reiniciar a instância fora dos horários de pico.

  4. Carregue os drivers VFIO e VFIO-PCI.

    sudo modprobe vfio && \
    sudo modprobe vfio-pci
  5. Ative o noiommu_mode.

    sudo bash -c 'echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode'
  6. Obtenha o valor de bus-info da NIC.

    ethtool -i ethX

    Substitua ethX pelo ID da NIC desejada. Exemplo para eth1:bus-info

  7. Associe a NIC ao driver vfio-pci. Acesse o diretório usertools na pasta de instalação do DPDK e execute:

    sudo ./dpdk-devbind.py -b vfio-pci 0000:00:06.0
    Nota

    Substitua 0000:00:06.0 pelo valor real de bus-info da sua NIC.

    Execute ./dpdk-devbind.py --status para verificar. A saída abaixo mostra 0000:00:06.0 associado a vfio-pci:bound-status

  8. Inicie a aplicação DPDK. Acesse o diretório build/app na pasta de instalação do DPDK e execute o comando correspondente à sua versão.

    • Para DPDK 18.02 ou posterior:

      sudo ./testpmd -w 0000:00:06.0 -c 0x3 -- --total-num-mbufs=2048 -ai
    • Para versões anteriores ao DPDK 18.02:

      sudo ./testpmd -w 0000:00:06.0 -c 0x3 -- --total-num-mbufs=2048 --disable-hw-vlan -ai
    Nota

    O parâmetro -w 0000:00:06.0 especifica a NIC. O valor de total-num-mbufs=2048 deve corresponder ao tamanho da huge page. Substitua ambos pelos valores reais.

    Exemplo de aplicação DPDK em execução:run-dpdk