He configurado 8 colas múltiples en mi máquina CentOS VM (que se ejecuta en KVM).
<interface type='direct' trustGuestRxFilters='yes'>
<source dev='ens113f0' mode='passthrough'/>
<model type='virtio'/>
<driver name='vhost' queues='8'/>
</interface>
Puedo encontrar que se crean 8 colas en VM usando ethtool.
[centos@vm ~]$ ethtool -l eth1
Channel parameters for eth1:
Pre-set maximums:
RX: 0
TX: 0
Other: 0
Combined: 8
Current hardware settings:
RX: 0
TX: 0
Other: 0
Combined: 4
Ahora quería restringir 1 cola RX y 2 colas TX para mi aplicación DPDK. Estoy intentando configurar lo mismo usando ethtool pero arroja el siguiente error:
[centos@vm ~]$ sudo ethtool -L eth1 rx 1 tx 2
Cannot set device channel parameters: Invalid argument
Puedo configurar colas combinadas = 2 pero no colas RX/TX específicas.
[centos@vm ~]$ sudo ethtool -L eth1 combined 2
[centos@vm ~]$ ethtool -l eth1
Channel parameters for eth1:
Pre-set maximums:
RX: 0
TX: 0
Other: 0
Combined: 8
Current hardware settings:
RX: 0
TX: 0
Other: 0
Combined: 2
¿Alguna razón/justificación para ello?
¿Hay alguna otra forma de configurar las colas RX y TX en Linux?
¿Hay alguna forma de especificar el tamaño de las colas RX y TX en el comando libvirt XML/Qemu? Lo busqué en Google antes de publicar esta pregunta pero no pude encontrar nada.
Gracias.
Respuesta1
La configuración de DPDK RX-TX se controla mediante rte_eth_dev_configure
. Por lo tanto, solo tiene sentido vincular la NIC igb_uio, uio_pci_generic or vfio-pci
y ejecutar la API de configuración con un número adecuado de colas RX y TX. La configuración de ethtool es incorrecta para el puerto DPDK.