如何在 linux / Qemu / KVM 中設定 Rx 佇列 = N?

如何在 linux / Qemu / KVM 中設定 Rx 佇列 = N?

我在 CentOS VM 上配置了 8 個多個佇列(在 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

現在,我想限制我的 DPDK 應用程式的 1 個 RX 佇列和 2 個 TX 佇列。我嘗試使用 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 指令中指定 RX 和 TX 佇列大小嗎?我在發布這個問題之前用谷歌搜尋過,但找不到任何東西。

謝謝。

答案1

DPDK RX-TX 配置透過使用 進行控制rte_eth_dev_configure。因此,只有將 NIC 綁定到igb_uio, uio_pci_generic or vfio-pci適當數量的 RX 和 TX 隊列並執行配置 API 才有意義。 ethtool 的設定對於 DPDK 連接埠不正確。

相關內容