CentOS VM ボックス (KVM 上で実行) に 8 つのマルチキューを設定しました。
<interface type='direct' trustGuestRxFilters='yes'>
<source dev='ens113f0' mode='passthrough'/>
<model type='virtio'/>
<driver name='vhost' queues='8'/>
</interface>
ethtool を使用して VM 上に 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 キューのサイズを指定する方法はありますか? この質問を投稿する前に Google で検索しましたが、何も見つかりませんでした。
ありがとう。
答え1
DPDK RX-TX 構成は を使用して制御されますrte_eth_dev_configure
。したがって、NIC を にバインドしigb_uio, uio_pci_generic or vfio-pci
、適切な数の RX キューと TX キューを使用して configure API を実行することだけが意味があります。ethtool からの設定は DPDK ポートに対して正しくありません。