From: Stephen Hemminger <stephen@networkplumber.org>
To: Terry Lam <vtlam@google.com>
Cc: "David S. Miller" <davem@davemloft.net>,
netdev@vger.kernel.org, Nandita Dukkipati <nanditad@google.com>,
Eric Dumazet <edumazet@google.com>
Subject: Re: [PATCH v3] net-qdisc-hhf: Heavy-Hitter Filter (HHF) qdisc
Date: Fri, 20 Dec 2013 08:01:49 -0800 [thread overview]
Message-ID: <20131220080149.09e93a9f@nehalam.linuxnetplumber.net> (raw)
In-Reply-To: <1387096221-20112-1-git-send-email-vtlam@google.com>
On Sun, 15 Dec 2013 00:30:21 -0800
Terry Lam <vtlam@google.com> wrote:
> This patch implements the first size-based qdisc that attempts to
> differentiate between small flows and heavy-hitters. The goal is to
> catch the heavy-hitters and move them to a separate queue with less
> priority so that bulk traffic does not affect the latency of critical
> traffic. Currently "less priority" means less weight (2:1 in
> particular) in a Weighted Deficit Round Robin (WDRR) scheduler.
>
> In essence, this patch addresses the "delay-bloat" problem due to
> bloated buffers. In some systems, large queues may be necessary for
> obtaining CPU efficiency, or due to the presence of unresponsive
> traffic like UDP, or just a large number of connections with each
> having a small amount of outstanding traffic. In these circumstances,
> HHF aims to reduce the HoL blocking for latency sensitive traffic,
> while not impacting the queues built up by bulk traffic. HHF can also
> be used in conjunction with other AQM mechanisms such as CoDel.
>
> To capture heavy-hitters, we implement the "multi-stage filter" design
> in the following paper:
> C. Estan and G. Varghese, "New Directions in Traffic Measurement and
> Accounting", in ACM SIGCOMM, 2002.
>
> Some configurable qdisc settings through 'tc':
> - hhf_reset_timeout: period to reset counter values in the multi-stage
> filter (default 40ms)
> - hhf_admit_bytes: threshold to classify heavy-hitters
> (default 128KB)
> - hhf_evict_timeout: threshold to evict idle heavy-hitters
> (default 1s)
> - hhf_non_hh_weight: Weighted Deficit Round Robin (WDRR) weight for
> non-heavy-hitters (default 2)
> - hh_flows_limit: max number of heavy-hitter flow entries
> (default 2048)
>
> Note that the ratio between hhf_admit_bytes and hhf_reset_timeout
> reflects the bandwidth of heavy-hitters that we attempt to capture
> (25Mbps with the above default settings).
>
> The false negative rate (heavy-hitter flows getting away unclassified)
> is zero by the design of the multi-stage filter algorithm.
> With 100 heavy-hitter flows, using four hashes and 4000 counters yields
> a false positive rate (non-heavy-hitters mistakenly classified as
> heavy-hitters) of less than 1e-4.
>
> Signed-off-by: Terry Lam <vtlam@google.com>
> ---
> Changelog since v2:
> - With u32 timestamp (to save memory), standard time_before() does not
> work, so we need hhf_time_before(). Also re-test with netperf that
> HHF can improve mice latency (eg 10X with 200 bulk flows on 10G link).
>
> Changelog since v1:
> - Use time_before and no explicit inline
>
> include/uapi/linux/pkt_sched.h | 25 ++
> net/sched/Kconfig | 9 +
> net/sched/Makefile | 1 +
> net/sched/sch_hhf.c | 746 +++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 781 insertions(+)
> create mode 100644 net/sched/sch_hhf.c
Please post the iproute2 changes as well...
next prev parent reply other threads:[~2013-12-20 16:01 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-11 7:26 [PATCH] net-qdisc-hhf: Heavy-Hitter Filter (HHF) qdisc Terry Lam
2013-12-11 20:37 ` Stephen Hemminger
2013-12-11 23:50 ` Tom Herbert
2013-12-12 1:42 ` Terry Lam
2013-12-12 2:10 ` [PATCH v2] " Terry Lam
2013-12-12 3:51 ` Eric Dumazet
2013-12-12 4:21 ` Terry Lam
2013-12-15 8:30 ` [PATCH v3] " Terry Lam
2013-12-19 19:30 ` David Miller
2013-12-19 19:40 ` Eric Dumazet
2013-12-19 19:48 ` David Miller
2013-12-20 16:01 ` Stephen Hemminger [this message]
2014-03-21 21:45 ` [PATCH] " Tom Herbert
2014-03-24 4:54 ` Terry Lam
2014-03-24 23:57 ` Tom Herbert
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=20131220080149.09e93a9f@nehalam.linuxnetplumber.net \
--to=stephen@networkplumber.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=nanditad@google.com \
--cc=netdev@vger.kernel.org \
--cc=vtlam@google.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.