All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sander Eikelenboom <linux@eikelenboom.it>
To: David Laight <David.Laight@ACULAB.COM>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	'Paul Durrant' <Paul.Durrant@citrix.com>,
	Wei Liu <wei.liu2@citrix.com>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH net v2 1/3] xen-netback: remove pointless clause from if statement
Date: Fri, 28 Mar 2014 12:35:55 +0100	[thread overview]
Message-ID: <90991437.20140328123555__26414.6067937419$1396006668$gmane$org@eikelenboom.it> (raw)
In-Reply-To: <063D6719AE5E284EB5DD2968C1650D6D0F6EB7AC@AcuExch.aculab.com>


Friday, March 28, 2014, 12:11:24 PM, you wrote:

> From: Sander Eikelenboom
>> Friday, March 28, 2014, 11:35:58 AM, you wrote:
>> 
>> > From: Paul Durrant
>> >> > A reasonable high estimate for the number of slots required for a specific
>> >> > message is 'frag_count + total_size/4096'.
>> >> > So if that are that many slots free it is definitely ok to add the message.
>> >> >
>> >>
>> >> Hmm, that may work. By total_size, I assume you mean skb->len, so that calculation is based on an
>> >> overhead of 1 non-optimally packed slot per frag. There'd still need to be a +1 for the GSO 'extra'
>> >> though.
>> 
>> > Except I meant '2 * frag_count + size/4096' :-(
>> 
>> > You have to assume that every fragment starts at n*4096-1 (so need
>> > at least two slots). A third slot is only needed for fragments
>> > longer that 1+4096+2 - but an extra one is needed for every
>> > 4096 bytes after that.
>> 
>> He did that in his followup patch series .. that works .. for small packets
>> But for larger ones it's an extremely wasteful estimate and it quickly get larger than the
>> MAX_SKB_FRAGS
>> we had before and even to large causing stalls. I tried doing this type of calculation with a CAP of
>> the old  MAX_SKB_FRAGS calculation and that works.

> I'm confused (easily done).
> If you are trying to guess at the number of packets to queue waiting for
> the thread that sets things up to run then you want an underestimate.
> Since any packets that can't actually be transferred will stay on the queue

We want to overestimate the max_slots_needed .. so that if we check and the ring
hasn't got that many slots free .. we don't dequeue the SKB and wait until there becomes
more space available on the ring.

This is done by a very very cheap minimum estimate .. and a slightly more costly maximum estimate,

The maximum estimate was changed (in said commit) and believed to be the worst case.
But this didn't take the offset into account so it could lead to an underestimation,
which then leads to trying to overrun the ring .. this then fails at the grant_copy code,
since the grant reference is bogus so the hypervisor refuses to do that.

But if you do take the offset into account worst case .. you end up with a gross overestimation
that could even be larger than the ring size, leading to a stall since the packet can never be processed
since the ring can't possibly free more slots that in has. But i think the old calculation is the
theoretical max (due to the limitation in total packetsize not *all* frags can have a offset and be that large
that it would cost more slots).

So you could use the old calc as a CAP so you don't overestimate to the extent that you would stall.
)

  parent reply	other threads:[~2014-03-28 11:35 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-27 12:56 [PATCH net v2 0/3] xen-netback: fix rx slot estimation Paul Durrant
2014-03-27 12:56 ` [PATCH net v2 1/3] xen-netback: remove pointless clause from if statement Paul Durrant
2014-03-27 12:56 ` Paul Durrant
2014-03-27 13:45   ` Sander Eikelenboom
2014-03-27 13:45   ` Sander Eikelenboom
2014-03-27 13:54     ` Paul Durrant
2014-03-27 13:54     ` Paul Durrant
2014-03-27 14:02       ` Sander Eikelenboom
2014-03-27 14:09         ` Paul Durrant
2014-03-27 14:29           ` Sander Eikelenboom
2014-03-27 14:29           ` Sander Eikelenboom
2014-03-27 14:38             ` Paul Durrant
2014-03-27 14:38             ` Paul Durrant
2014-03-27 16:46           ` Sander Eikelenboom
2014-03-27 16:54             ` Paul Durrant
2014-03-27 17:15               ` Sander Eikelenboom
2014-03-27 17:26                 ` Paul Durrant
2014-03-27 17:26                 ` Paul Durrant
2014-03-27 18:34                   ` Sander Eikelenboom
2014-03-27 19:22                     ` [Xen-devel] " Sander Eikelenboom
2014-03-28  9:30                       ` Paul Durrant
2014-03-28  9:30                       ` [Xen-devel] " Paul Durrant
2014-03-28  9:39                         ` Sander Eikelenboom
2014-03-28  9:47                           ` Paul Durrant
2014-03-28  9:59                             ` Sander Eikelenboom
2014-03-28 10:12                               ` Paul Durrant
2014-03-28 10:36                                 ` Sander Eikelenboom
2014-03-28 10:36                                 ` [Xen-devel] " Sander Eikelenboom
2014-03-28 10:12                               ` Paul Durrant
2014-03-28  9:59                             ` Sander Eikelenboom
2014-03-28 10:01                             ` David Laight
2014-03-28 10:01                             ` [Xen-devel] " David Laight
2014-03-28 10:20                               ` Paul Durrant
2014-03-28 10:35                                 ` David Laight
2014-03-28 10:35                                 ` [Xen-devel] " David Laight
2014-03-28 10:42                                   ` Sander Eikelenboom
2014-03-28 10:42                                   ` [Xen-devel] " Sander Eikelenboom
2014-03-28 10:47                                     ` Paul Durrant
2014-03-28 10:47                                     ` [Xen-devel] " Paul Durrant
2014-03-28 10:53                                       ` Sander Eikelenboom
2014-03-28 10:53                                       ` [Xen-devel] " Sander Eikelenboom
2014-03-28 11:11                                     ` David Laight
2014-03-28 11:35                                       ` Sander Eikelenboom
2014-03-28 11:35                                       ` Sander Eikelenboom [this message]
2014-03-28 11:11                                     ` David Laight
2014-03-28 10:44                                   ` Paul Durrant
2014-03-28 10:44                                   ` [Xen-devel] " Paul Durrant
2014-03-28 10:20                               ` Paul Durrant
2014-03-28  9:47                           ` Paul Durrant
2014-03-28  9:39                         ` Sander Eikelenboom
2014-03-27 19:22                     ` Sander Eikelenboom
2014-03-28  0:55                     ` Sander Eikelenboom
2014-03-28  0:55                     ` [Xen-devel] " Sander Eikelenboom
2014-03-28  9:36                       ` Paul Durrant
2014-03-28  9:36                       ` [Xen-devel] " Paul Durrant
2014-03-28  9:46                         ` Sander Eikelenboom
2014-03-28  9:46                         ` [Xen-devel] " Sander Eikelenboom
2014-03-27 18:34                   ` Sander Eikelenboom
2014-03-27 17:15               ` Sander Eikelenboom
2014-03-27 16:54             ` Paul Durrant
2014-03-27 16:46           ` Sander Eikelenboom
2014-03-27 14:09         ` Paul Durrant
2014-03-27 14:02       ` Sander Eikelenboom
2014-03-27 14:00     ` Paul Durrant
2014-03-27 14:05       ` Sander Eikelenboom
2014-03-27 14:05       ` Sander Eikelenboom
2014-03-27 14:00     ` Paul Durrant
2014-03-27 12:56 ` [PATCH net v2 2/3] xen-netback: worse-case estimate in xenvif_rx_action is underestimating Paul Durrant
2014-03-27 12:56 ` Paul Durrant
2014-03-27 12:56 ` [PATCH net v2 3/3] xen-netback: BUG_ON in xenvif_rx_action() not catching overflow Paul Durrant
2014-03-27 12:56 ` 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='90991437.20140328123555__26414.6067937419$1396006668$gmane$org@eikelenboom.it' \
    --to=linux@eikelenboom.it \
    --cc=David.Laight@ACULAB.COM \
    --cc=Ian.Campbell@citrix.com \
    --cc=Paul.Durrant@citrix.com \
    --cc=netdev@vger.kernel.org \
    --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 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.