내 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
. 따라서 igb_uio, uio_pci_generic or vfio-pci
적절한 수의 RX 및 TX 대기열을 사용하여 NIC를 바인딩하고 구성 API를 실행하는 것이 합리적입니다 . DPDK 포트에 대한 ethtool의 설정이 올바르지 않습니다.