From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Maxime Coquelin <maxime.coquelin@redhat.com>
Cc: dev@dpdk.org, Ilya Maximets <i.maximets@samsung.com>
Subject: Re: [PATCH 4/8] net/virtio: allocate queue at init stage
Date: Fri, 4 Nov 2016 09:50:48 +0800 [thread overview]
Message-ID: <20161104015048.GS16751@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <3106a280-db21-604d-7f3f-dd2575efa1e8@redhat.com>
On Thu, Nov 03, 2016 at 10:11:43PM +0100, Maxime Coquelin wrote:
>
>
> On 11/03/2016 05:09 PM, Yuanhan Liu wrote:
> >Queue allocation should be done once, since the queue related info (such
> >as vring addreess) will only be informed to the vhost-user backend once
> >without virtio device reset.
> >
> >That means, if you allocate queues again after the vhost-user negotiation,
> >the vhost-user backend will not be informed any more. Leading to a state
> >that the vring info mismatches between virtio PMD driver and vhost-backend:
> >the driver switches to the new address has just been allocated, while the
> >vhost-backend still sticks to the old address has been assigned in the init
> >stage.
> >
> >Unfortunately, that is exactly how the virtio driver is coded so far: queue
> >allocation is done at queue_setup stage (when rte_eth_tx/rx_queue_setup is
> >invoked). This is wrong, because queue_setup can be invoked several times.
> >For example,
> >
> > $ start_testpmd.sh ... --txq=1 --rxq=1 ...
> > > port stop 0
> > > port config all txq 1 # just trigger the queue_setup callback again
> > > port config all rxq 1
> > > port start 0
> >
> >The right way to do is allocate the queues in the init stage, so that the
> >vring info could be persistent with the vhost-user backend.
> >
> >Besides that, we should allocate max_queue pairs the device supports, but
> >not nr queue pairs firstly configured, to make following case work.
> I understand, but how much memory overhead does that represent?
We are allocating max queue pairs the device supports, but not the
virtio-net spec supports, which, as you stated, would be too much.
I don't know the typical value of the queue pairs being used in
production, but normally, I would assume it be small, something
like 2, or 4. It's 1 by default after all.
So I think it will not be an issue.
> Have you considered performing a device reset when queue number is
> changed?
Not a good idea and clean solution to me.
--yliu
next prev parent reply other threads:[~2016-11-04 1:49 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-03 16:09 [PATCH 0/8] net/virtio: fix queue reconfigure issue Yuanhan Liu
2016-11-03 16:09 ` [PATCH 1/8] net/virtio: revert "virtio: fix restart" Yuanhan Liu
2016-11-03 20:36 ` Maxime Coquelin
2016-11-04 2:00 ` Yuanhan Liu
2016-11-04 8:09 ` Maxime Coquelin
2016-11-04 14:28 ` Yuanhan Liu
2016-11-04 8:10 ` Maxime Coquelin
2016-11-03 16:09 ` [PATCH 2/8] net/virtio: simplify queue memzone name Yuanhan Liu
2016-11-03 20:41 ` Maxime Coquelin
2016-11-03 16:09 ` [PATCH 3/8] net/virtio: simplify queue allocation Yuanhan Liu
2016-11-03 20:48 ` Maxime Coquelin
2016-11-04 1:51 ` Yuanhan Liu
2016-11-03 16:09 ` [PATCH 4/8] net/virtio: allocate queue at init stage Yuanhan Liu
2016-11-03 21:11 ` Maxime Coquelin
2016-11-04 1:50 ` Yuanhan Liu [this message]
2016-11-04 8:08 ` Maxime Coquelin
2016-11-04 8:25 ` Maxime Coquelin
2016-11-04 15:21 ` Kevin Traynor
2016-11-04 20:30 ` Kevin Traynor
2016-11-05 6:15 ` Yuanhan Liu
2016-11-03 16:09 ` [PATCH 5/8] net/virtio: initiate vring " Yuanhan Liu
2016-11-04 8:34 ` Maxime Coquelin
2016-11-03 16:09 ` [PATCH 6/8] net/virtio: move queue configure code to proper place Yuanhan Liu
2016-11-04 8:39 ` Maxime Coquelin
2016-11-03 16:09 ` [PATCH 7/8] net/virtio: complete init stage at the right place Yuanhan Liu
2016-11-04 8:44 ` Maxime Coquelin
2016-11-03 16:10 ` [PATCH 8/8] net/virtio: remove started field Yuanhan Liu
2016-11-04 8:46 ` Maxime Coquelin
2016-11-05 9:40 ` [PATCH v2 00/10] net/virtio: fix queue reconfigure issue Yuanhan Liu
2016-11-05 9:40 ` [PATCH v2 01/10] net/virtio: revert fix restart Yuanhan Liu
2016-11-05 9:40 ` [PATCH v2 02/10] net/virtio: simplify queue memzone name Yuanhan Liu
2016-11-05 9:40 ` [PATCH v2 03/10] net/virtio: simplify queue allocation Yuanhan Liu
2016-11-05 9:40 ` [PATCH v2 04/10] net/virtio: allocate queue at init stage Yuanhan Liu
2016-11-07 14:23 ` Thomas Monjalon
2016-11-05 9:41 ` [PATCH v2 05/10] net/virtio: initiate vring " Yuanhan Liu
2016-11-05 9:41 ` [PATCH v2 06/10] net/virtio: move queue configure code to proper place Yuanhan Liu
2016-11-05 9:41 ` [PATCH v2 07/10] net/virtio: complete init stage at the right place Yuanhan Liu
2016-11-05 9:41 ` [PATCH v2 08/10] net/virtio: remove started field Yuanhan Liu
2016-11-05 9:41 ` [PATCH v2 09/10] net/virtio: fix less queues being enabled issue Yuanhan Liu
2016-11-05 9:41 ` [PATCH v2 10/10] net/virtio: fix multiple queue enabling Yuanhan Liu
2016-11-07 9:25 ` Yuanhan Liu
2016-11-07 14:44 ` [PATCH v2 00/10] net/virtio: fix queue reconfigure issue Thomas Monjalon
2016-11-07 15:05 ` Yao, Lei A
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=20161104015048.GS16751@yliu-dev.sh.intel.com \
--to=yuanhan.liu@linux.intel.com \
--cc=dev@dpdk.org \
--cc=i.maximets@samsung.com \
--cc=maxime.coquelin@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.