Как установить очередь Rx = N в Linux / Qemu / KVM?

Как установить очередь Rx = N в Linux / Qemu / KVM?

Я настроил 8 множественных очередей на своей виртуальной машине CentOS (работающей на KVM).

<interface type='direct' trustGuestRxFilters='yes'>
  <source dev='ens113f0' mode='passthrough'/>
  <model type='virtio'/>
  <driver name='vhost' queues='8'/>
</interface>

Я обнаружил, что на виртуальной машине с помощью ethtool создано 8 очередей.

[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

Теперь я хотел ограничить 1 очередь RX и 2 очереди TX для моего приложения DPDK. Я пытаюсь установить то же самое с помощью ethtool, но он выдает следующую ошибку:

[centos@vm ~]$ sudo ethtool -L eth1 rx 1 tx 2
Cannot set device channel parameters: Invalid argument

Я могу установить комбинированные очереди = 2, но не конкретные очереди RX/TX.

[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

Есть ли какая-нибудь причина/оправдание этому?

Есть ли другой способ настроить очереди приема и передачи в Linux?

Есть ли способ указать размер очередей RX и TX в команде libvirt XML / Qemu? Я гуглил перед тем, как задать этот вопрос, но ничего не нашел.

Спасибо.

решение1

Конфигурация DPDK RX-TX контролируется с помощью rte_eth_dev_configure. Поэтому имеет смысл только привязать NIC igb_uio, uio_pci_generic or vfio-pciи выполнить API конфигурации с соответствующим номером очереди RX и TX. Настройка из ethtool неверна для порта DPDK.

Связанный контент