From: "John W. Linville" <linville@tuxdriver.com>
To: Nathaniel Smith <njs@pobox.com>
Cc: linux-wireless@vger.kernel.org,
bloat-devel@lists.bufferbloat.net, johannes@sipsolutions.net,
nbd@openwrt.org
Subject: Re: [RFC v2] mac80211: implement eBDP algorithm to fight bufferbloat
Date: Mon, 21 Feb 2011 13:52:21 -0500 [thread overview]
Message-ID: <20110221185221.GE9650@tuxdriver.com> (raw)
In-Reply-To: <AANLkTinTcdbjSYvt7Z_yOe_8kGZnyp2MBXZYYJ9zGB_D@mail.gmail.com>
On Sat, Feb 19, 2011 at 04:37:00PM -0800, Nathaniel Smith wrote:
> Actually, a few more comments just occurred to me...
>
> On Fri, Feb 18, 2011 at 1:21 PM, John W. Linville
> <linville@tuxdriver.com> wrote:
> > Johannes' comment about tx status reporting being unreliable (and what
> > he was really saying) finally sunk-in. So, this version uses
> > skb->destructor to track in-flight fragments. That should handle
> > fragments that get silently dropped in the driver for whatever reason
> > without leaking queue capacity. Correct me if I'm wrong!
>
> Should we be somehow filtering out and ignoring the packets that get
> dropped, when we're calculating the average packet transmission rate?
> Presumably they're getting dropped almost instantly, so they don't
> really take up queue space and they have abnormally fast transmission
> times, which will tend to cause us to overestimate max_enqueued? They
> should be rare, though, at least. (And presumably we *should* include
> packets that get dropped because their retry timer ran out, since they
> were sitting in the queue for that long.) Possibly we should just
> ignore any packet that was handled in less than, oh, say, a few
> microseconds?
If you look, I only do the timing measurement for frames that
result in a tx status report. Frames that are dropped will only hit
ieee80211_tx_skb_free (which reduces the enqueued count but doesn't
recalculate max_enqueue).
> Alternatively, if we aren't worried about those packets, then is there
> any reason this patch should be mac80211 specific?
No, in fact I was thinking the same thing. Some thought needs to be
put to whether or not we can ignore the effects of letting dropped
packets effect the latency estimate...
> > +static void ieee80211_tx_skb_free(struct sk_buff *skb)
> > +{
> > + struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(skb->dev);
> > + struct ieee80211_local *local = sdata->local;
> > + int q = skb_get_queue_mapping(skb);
> > +
> > + /* decrement enqueued count */
> > + atomic_dec(&sdata->qdata[q].enqueued);
> > +
> > + /* if queue stopped, wake it */
> > + if (ieee80211_queue_stopped(&local->hw, q))
> > + ieee80211_wake_queue(&local->hw, q);
> > +}
>
> I think you need to check that .enqueued is < max_enqueued here,
> instead of waking the queue unconditionally.
>
> Suppose the data rate drops while there's a steady flow -- our
> max_enqueued value will drop below the current queue size, but because
> we wake the queue unconditionally after each packet goes out, and then
> only stop it again after we've queued at least one new packet, we
> might get 'stuck' with an over-large queue.
Yes, thanks for pointing that out. My non-thorough tests seem to do
a better job at holding the latency lower with that change.
Thanks for taking a look!
John
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
next prev parent reply other threads:[~2011-02-21 19:00 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-13 17:56 [PATCH 0/5] iwlwifi: Auto-tune tx queue size to maintain latency under load Nathaniel J. Smith
2011-02-13 17:56 ` [PATCH 1/5] iwlwifi: Simplify tx queue management Nathaniel J. Smith
2011-02-14 9:57 ` Johannes Berg
2011-02-14 22:17 ` Nathaniel Smith
2011-02-14 22:45 ` wwguy
2011-02-15 0:15 ` Dave Täht
2011-02-16 9:16 ` Stanislaw Gruszka
2011-02-16 14:41 ` John W. Linville
2011-02-16 15:13 ` wwguy
2011-02-15 12:11 ` Johannes Berg
2011-02-14 15:33 ` wwguy
2011-02-13 17:56 ` [PATCH 2/5] iwlwifi: Convert the tx queue high_mark to an atomic_t Nathaniel J. Smith
2011-02-14 12:16 ` Johannes Berg
2011-02-14 22:35 ` Nathaniel Smith
2011-02-15 12:08 ` Johannes Berg
2011-02-15 17:37 ` Nathaniel Smith
2011-02-13 17:56 ` [PATCH 3/5] iwlwifi: Invert the sense of the queue high_mark Nathaniel J. Smith
2011-02-13 17:56 ` [PATCH 4/5] iwlwifi: auto-tune tx queue size to minimize latency Nathaniel J. Smith
2011-02-14 12:17 ` Johannes Berg
2011-02-14 21:58 ` Nathaniel Smith
2011-02-15 12:13 ` Johannes Berg
2011-02-15 15:03 ` John W. Linville
2011-02-16 8:59 ` Johannes Berg
2011-02-15 17:31 ` Nathaniel Smith
2011-02-14 15:46 ` wwguy
2011-02-13 17:56 ` [PATCH 5/5] iwlwifi: make current tx queue sizes visible in debugfs Nathaniel J. Smith
2011-02-14 0:32 ` [PATCH 0/5] iwlwifi: Auto-tune tx queue size to maintain latency under load Julian Calaby
2011-02-14 3:28 ` Nathaniel Smith
2011-02-16 15:50 ` John W. Linville
2011-02-16 23:08 ` Nathaniel Smith
2011-02-16 23:42 ` wwguy
2011-02-17 1:49 ` [RFC] mac80211: implement eBDP algorithm to fight bufferbloat John W. Linville
2011-02-17 3:31 ` Ben Greear
2011-02-17 4:26 ` Nathaniel Smith
2011-02-17 8:31 ` Johannes Berg
2011-02-18 21:21 ` [RFC v2] " John W. Linville
2011-02-19 3:44 ` Nathaniel Smith
2011-02-21 18:47 ` John W. Linville
2011-02-21 23:26 ` Nathaniel Smith
2011-02-23 22:28 ` John W. Linville
2011-02-25 18:21 ` Nathaniel Smith
2011-02-25 18:27 ` Nathaniel Smith
2011-02-20 0:37 ` Nathaniel Smith
2011-02-21 18:52 ` John W. Linville [this message]
2011-02-21 15:28 ` Johannes Berg
2011-02-21 19:06 ` John W. Linville
2011-02-21 20:26 ` Tianji Li
2011-02-28 13:07 ` Johannes Berg
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=20110221185221.GE9650@tuxdriver.com \
--to=linville@tuxdriver.com \
--cc=bloat-devel@lists.bufferbloat.net \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=nbd@openwrt.org \
--cc=njs@pobox.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.