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
Conecte-se à sua instância ECS ou EBM. Consulte Fazer login em uma instância Linux usando o Workbench.
-
Verifique a configuração do GRUB.
cat /proc/cmdline -
Adicione
intel_iommu=onao arquivo/etc/default/grub.-
Abra o arquivo.
sudo vim /etc/default/grub -
Pressione
ipara entrar no modo de inserção. Adicioneintel_iommu=onao parâmetroGRUB_CMDLINE_LINUX. Salve e feche o arquivo.Exemplo da configuração modificada:

-
Aplique a configuração.
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
-
Reinicie a instância e reconecte-se após a inicialização.
rebootAvisoA 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.
-
-
Carregue os drivers VFIO e VFIO-PCI.
sudo modprobe vfio && \ sudo modprobe vfio-pci -
Ative o
noiommu_mode.sudo bash -c 'echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode' -
Obtenha o valor de
bus-infoda NIC.ethtool -i ethXSubstitua
ethXpelo ID da NIC desejada. Exemplo paraeth1:
-
Associe a NIC ao driver
vfio-pci. Acesse o diretóriousertoolsna pasta de instalação do DPDK e execute:sudo ./dpdk-devbind.py -b vfio-pci 0000:00:06.0NotaSubstitua
0000:00:06.0pelo valor real debus-infoda sua NIC.Execute
./dpdk-devbind.py --statuspara verificar. A saída abaixo mostra0000:00:06.0associado avfio-pci:
-
Inicie a aplicação DPDK. Acesse o diretório
build/appna 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
NotaO parâmetro
-w 0000:00:06.0especifica a NIC. O valor detotal-num-mbufs=2048deve corresponder ao tamanho da huge page. Substitua ambos pelos valores reais.Exemplo de aplicação DPDK em execução:

-
