From: Ian Campbell <Ian.Campbell@citrix.com>
To: Paul Durrant <paul.durrant@citrix.com>
Cc: <xen-devel@lists.xen.org>, <netdev@vger.kernel.org>,
Wei Liu <wei.liu2@citrix.com>,
Sander Eikelenboom <linux@eikelenboom.it>
Subject: Re: [PATCH net 2/3] xen-netback: worse-case estimate in xenvif_rx_action is underestimating
Date: Thu, 27 Mar 2014 12:27:33 +0000 [thread overview]
Message-ID: <1395923253.22909.106.camel@kazak.uk.xensource.com> (raw)
In-Reply-To: <1395922988-37702-3-git-send-email-paul.durrant@citrix.com>
On Thu, 2014-03-27 at 12:23 +0000, Paul Durrant wrote:
> The worse-case estimate for skb ring slot usage in xenvif_rx_action()
> fails to take fragment page_offset into account. The page_offset does,
> however, affect the number of times the fragmentation code calls
> start_new_rx_buffer() (i.e. consume another slot) and the worse-case
> should assume that will always return true. This patch adds the page_offset
> into the DIV_ROUND_UP for each frag.
At least for the copying mode wasn't the idea that you would copy to the
start of the page, so the offset wasn't relevant? IOW is the real issue
that start_new_rx_buffer is/was too aggressive?
Now that we do mapping though I suspect the offset becomes relevant
again here and there is a 1:1 mapping from slots to frags again.
(I could have sworn David V got rid of all this precalculating stuff.)
>
> Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> Cc: Ian Campbell <ian.campbell@citrix.com>
> Cc: Wei Liu <wei.liu2@citrix.com>
> Cc: Sander Eikelenboom <linux@eikelenboom.it>
> ---
> drivers/net/xen-netback/netback.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
> index befc413..ac35489 100644
> --- a/drivers/net/xen-netback/netback.c
> +++ b/drivers/net/xen-netback/netback.c
> @@ -492,8 +492,18 @@ static void xenvif_rx_action(struct xenvif *vif)
> PAGE_SIZE);
> for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
> unsigned int size;
> + unsigned int offset;
> +
> size = skb_frag_size(&skb_shinfo(skb)->frags[i]);
> - max_slots_needed += DIV_ROUND_UP(size, PAGE_SIZE);
> + offset = skb_shinfo(skb)->frags[i].page_offset;
> +
> + /* For a worse-case estimate we need to factor in
> + * the fragment page offset as this will affect the
> + * number of times xenvif_gop_frag_copy() will
> + * call start_new_rx_buffer().
> + */
> + max_slots_needed += DIV_ROUND_UP(offset + size,
> + PAGE_SIZE);
> }
> if (skb_is_gso(skb) &&
> (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV4 ||
next prev parent reply other threads:[~2014-03-27 12:27 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-27 12:23 [PATCH net 0/3] xen-netback: fix rx slot estimation Paul Durrant
2014-03-27 12:23 ` [PATCH net 1/3] xen-netback: remove pointless clause from if statement Paul Durrant
2014-03-27 12:24 ` Ian Campbell
2014-03-27 12:52 ` Sander Eikelenboom
2014-03-27 12:23 ` [PATCH net 2/3] xen-netback: worse-case estimate in xenvif_rx_action is underestimating Paul Durrant
2014-03-27 12:27 ` Ian Campbell [this message]
2014-03-27 12:29 ` Paul Durrant
2014-03-27 12:23 ` [PATCH net 3/3] xen-netback: BUG_ON in xenvif_rx_action() not catching overflow Paul Durrant
2014-03-27 12:28 ` Ian Campbell
2014-03-27 12:30 ` Paul Durrant
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=1395923253.22909.106.camel@kazak.uk.xensource.com \
--to=ian.campbell@citrix.com \
--cc=linux@eikelenboom.it \
--cc=netdev@vger.kernel.org \
--cc=paul.durrant@citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.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