DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Mattias Rönnblom" <mattias.ronnblom@ericsson.com>
To: Liron Himi <lironh@marvell.com>
Cc: Yuri Chipchev <yuric@marvell.com>,
	Jerin Jacob Kollanukkaran <jerinj@marvell.com>,
	dpdk-dev <dev@dpdk.org>
Subject: Re: [dpdk-dev] l2fwd-event not fully functional with 'dsw'
Date: Mon, 30 Dec 2019 10:51:44 +0000	[thread overview]
Message-ID: <10db7a38-407f-9d9f-b0ab-826e0787a8fa@ericsson.com> (raw)
In-Reply-To: <MN2PR18MB2398327DDE9EA0F509936CFDC6240@MN2PR18MB2398.namprd18.prod.outlook.com>

On 2019-12-29 20:45, Liron Himi wrote:
>
> Recently we tried to run the new l2fwd-event examples using the ‘dsw’ 
> as the evendev.
>
> We noticed that only 4096 packets were sent back to the ethdev.
>
> Only when we changed both ‘dequeue_depth’ and ‘enqueue_depth’ to 128 
> instead of 32, it started to work.
>
> Do you have any objections for modifying  the ‘dsw’ default 
> configuration to ‘128’?
>
I suspect the problem isn't really the default dsw burst sizes, but 
rather the additional requirements that dsw puts on its user. In 
particular, the requirement that no eventdev ports may be left "unattended".

 From what I can see, l2fwd-event uses the rx ethernet adapter. In case 
there are no ingress packets, the rx ethernet adapter will leave its 
eventdev port unattended, and thus will not work properly with dsw.

If someone wants to explore if this is indeed the problem, they could 
try adding a zero-sized rte_event_dequeue_burst() (being called for 
every service invocation) in the rx adapter code. A dequeue call will 
allow the dsw flow migration machinery to function properly, and will 
also periodically flush buffered events.A zero-sized enqueue operation 
(as suggested by the dsw documentation) would also work, but that would 
have the side-effect of always flushing any buffered events, which might 
be non-optimal from a performance point of view.

The same might also hold true for the l2fwd-event code, but at least the 
burst-variant of the main loop will periodically attend the eventdev 
port (by means of a dequeue and/or enqueue).

The proper way to address this issue would probably be to add a "needs 
maintenance" capability flag, and a pure event device maintenance 
function added to the eventdev API, or something along those lines. 
Another way might be to use a dsw-internal per lcore timer. That would 
instead require the user to call rte_timer_manage(). An additional 
complication for the latter solution is that, even though an eventdev 
port is not thread-safe, it doesn't really have an "owning" lcore, and 
thus it's difficult to figure out on which lcore to install the timer.



      reply	other threads:[~2019-12-30 10:51 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-29 19:45 Liron Himi
2019-12-30 10:51 ` Mattias Rönnblom [this message]

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=10db7a38-407f-9d9f-b0ab-826e0787a8fa@ericsson.com \
    --to=mattias.ronnblom@ericsson.com \
    --cc=dev@dpdk.org \
    --cc=jerinj@marvell.com \
    --cc=lironh@marvell.com \
    --cc=yuric@marvell.com \
    /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).