DPDK usage discussions
 help / color / mirror / Atom feed
From: Maxime Coquelin <maxime.coquelin@redhat.com>
To: Thomas Monjalon <thomas@monjalon.net>,
	Matheus Stolet <mstolet@mpi-sws.org>
Cc: users@dpdk.org
Subject: Re: Supporting RSS with DPDK in a VM
Date: Fri, 28 Jul 2023 16:25:29 +0200	[thread overview]
Message-ID: <0ab514a3-79f3-5398-7857-fa1f77ee40e2@redhat.com> (raw)
In-Reply-To: <2160676.Icojqenx9y@thomas>

Hi Matheus,

On 7/28/23 16:12, Thomas Monjalon wrote:
> Hello,
> 
> You can have packets distributed to multiple queues without RSS.
> 
> If you really wants to enable the RSS algorithms,
> it seems not supported for now with vhost_user.
> It can be enabled with vhost running in the kernel:
> https://qemu.readthedocs.io/en/latest/devel/ebpf_rss.html

Thomas is right, DPDK Virtio PMD supports RSS, but DPDK Vhost-user does
not (yet).

However, as you seem to be using a fairly recent OVS-DPDK version, you 
can enable Hash-based Tx packet steering mode on the vhostuser ports.

It has been introduced in OVS v2.17:
https://docs.openvswitch.org/en/latest/topics/userspace-tx-steering/

It is usefull if you have less PMD threads in OVS than the number of
queues in your Virtio device. Traffic will be distributed on the queues
based on the 5-tuple hash computed for OVS switching. The downside is
that this is not configurable as RSS though (Key not configurable, no
filters, ...).

Regards,
Maxime

> 
> 26/07/2023 00:58, Matheus Stolet:
>> Hello,
>>
>> I am trying to run a DPDK application with RSS enabled so that I can
>> have multiple rx queues. This application is running inside a VM. This
>> VM is hosted by QEMU using KVM acceleration and OvS with DPDK and
>> vhost-user are used in the backend. So to clarify things there are two
>> DPDK portions to this. The first is the DPDK portion used by OvS that
>> bypasses the host operating system. This is working fine. The other is a
>> DPDK application inside the virtual machine that will bypass the guest
>> operating system. This is where I am having trouble with.
>>
>> When I set rte_eth_conf.rxmode.mq_mode = ETH_MQ_RX_RSS in my application
>> I get the following errors:
>>     Warning: NIC does not support all requested RSS hash functions.
>>     virtio_dev_configure(): RSS support requested but not supported by the
>> device
>>     Port0 dev_configure = -95
>>
>> I setup my VM in QEMU to have mq=on and queues=10. I also set the number
>> of rx_queues when creating the vhost port using ovs to 10. Before
>> binding the interface to DPDK, I used ethtool to verify if the network
>> interface was actually setup to have multiple queues.
>>
>> Running the 'ethtool -l enps02' command yields the following output:
>>     Pre-set maximums:
>>     RX:             0
>>     TX:             0
>>     Other:          0
>>     Combined:       10
>>     Current hardware settings:
>>     RX:             0
>>     TX:             0
>>     Other:          0
>>     Combined:       10
>>
>>   From my understanding the combined values indicate that the interface
>> was properly setup to have multiple queues, so why am I getting the
>> unsupported RSS error? Are there other configuration steps that I have
>> to take to get this to work? Is RSS with DPDK not supported at all
>> inside a VM at the moment? Perhaps the "Port0 dev_configure() = -95"
>> error means something else? Without the receive side scaling turned on
>> my application is not able to achieve the desired throughput and won't
>> scale when I assign more cores to the application.
>>
>> Versions:
>> VM
>> DPDK: 21.11.4
>> Kernel: 5.4.0-148-generic
>> Distribution: Ubuntu 20.04
>>
>> Host
>> DPDK: 21.11.4
>> QEMU: 8.0.90
>> OvS: 3.0.5
>> Kernel: 5.15.111.1.amd64-smp
>> Distribution: Debian 11
>>
> 
> 
> 
> 
> 


  reply	other threads:[~2023-07-28 14:25 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-25 22:58 Matheus Stolet
2023-07-28 14:12 ` Thomas Monjalon
2023-07-28 14:25   ` Maxime Coquelin [this message]
2023-08-01 23:09   ` Matheus Stolet
2023-07-28 14:19 ` Van Haaren, Harry

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0ab514a3-79f3-5398-7857-fa1f77ee40e2@redhat.com \
    --to=maxime.coquelin@redhat.com \
    --cc=mstolet@mpi-sws.org \
    --cc=thomas@monjalon.net \
    --cc=users@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).