netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Eliezer Tamir <eliezer.tamir@linux.intel.com>
To: Dave Miller <davem@davemloft.net>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	Jesse Brandeburg <jesse.brandeburg@intel.com>,
	Don Skidmore <donald.c.skidmore@intel.com>,
	e1000-devel@lists.sourceforge.net,
	Willem de Bruijn <willemb@google.com>,
	Andi Kleen <andi@firstfloor.org>, HPA <hpa@zytor.com>,
	Eilon Greenstien <eilong@broadcom.com>,
	Or Gerlitz <or.gerlitz@gmail.com>,
	Alex Rosenbaum <alexr@mellanox.com>,
	Eliezer Tamir <eliezer@tamir.org.il>
Subject: [PATCH v5 net-next 0/5] net: low latency Ethernet device polling
Date: Mon, 27 May 2013 10:43:51 +0300	[thread overview]
Message-ID: <20130527074351.29882.51106.stgit@ladj378.jer.intel.com> (raw)

Hello Dave,

There are many small changes from the last time.
The two big changes are:
* Skb and sk now store a napi_id instead of a pointer.
* Very naive poll/select support. There is a dramatic improvement in both
  latencey and jitter, but clearly more work needs to be done here.

Please consider applying.

some rough poll/select results:
Using the optimized kernel from v2
testing with the sysctl value set to 50 and 0
sockperf using poll   on 10 udp sockets 7.0us vs. 51.9us
sockperf using select on 10 udp sockets 7.2us vs. 51.8us
sockperf using poll   on 10 tcp sockets 7.1us vs. 53.2us
sockperf using selct  on 10 tcp sockets 7.4us vs. 52.8us

Note to anyone doing testing: the sysctl value has moved to net.core 

change log
v5
- corrections suggested by Ben Hutchings:
  fixed typos, moved the config option and sysctl value from IPv4 to net
- moved sk_mark_ll() to the protocol handlers
- removed global id mechanism, replaced with a hashed napi_id.
  based on code sample from Eric Dumazet
  Note that ixgbe_free_q_vector() already waits an rcu grace period
  before freeing the q_vector, so nothing additional needs to be done
  when adding a call to napi_hash_del().
- simple poll/select support

v4
- removed separate config option for TCP as suggested Eric Dumazet.
- added linux mib counter for packets received through the low latency path,
  as suggested by Andi Kleen.
- re-allow module unloading, remove module param, use a global generation id
  instead to prevent the use of a stale napi pointer, as suggested
  by Eric Dumazet
- updated Documentation/networking/ip-sysctl.txt text

v3
- coding style changes suggested by Dave Miller

v2
- the sysctl knob is now in microseconds. The default value is now 0 (off).
- for now the code depends at configure time on CONFIG_I86_TSC 
- the napi reference in struct skb is now a union with the dma cookie
  since the former is only used on RX and the latter on TX,
  as suggested by Eric Dumazet.
- we do a better job at honoring non-blocking operations.
- removed busy-polling support for tcp_read_sock()
- remove dynamic disabling of GRO
- coding style fixes
- disallow unloading the device module after the feature has been used

Credit:
Jesse Brandeburg, Arun Chekhov Ilango, Julie Cummings,
Alexander Duyck, Eric Geisler, Jason Neighbors, Yadong Li,
Mike Polehn, Anil Vasudevan, Don Wood
Special thanks for finding bugs in earlier versions:
Willem de Bruijn and Andi Kleen

Thanks,
Eliezer

             reply	other threads:[~2013-05-27  7:43 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-27  7:43 Eliezer Tamir [this message]
2013-05-27  7:44 ` [PATCH v5 net-next 1/5] net: add napi_id and hash Eliezer Tamir
2013-05-28  0:28   ` Eric Dumazet
2013-05-28  8:03     ` Eliezer Tamir
2013-05-28 13:38       ` Eric Dumazet
2013-05-28 13:41         ` Eliezer Tamir
2013-05-27  7:44 ` [PATCH v5 net-next 2/5] net: implement support for low latency socket polling Eliezer Tamir
2013-05-28  0:26   ` Eric Dumazet
2013-05-28  8:04     ` Eliezer Tamir
2013-05-27  7:44 ` [PATCH v5 net-next 3/5] tcp: add TCP support for low latency receive poll Eliezer Tamir
2013-05-28  0:36   ` Eric Dumazet
2013-05-28  8:26     ` Eliezer Tamir
2013-05-28 12:15       ` Eliezer Tamir
2013-05-28 13:44         ` Eric Dumazet
2013-05-27  7:44 ` [PATCH v5 net-next 4/5] ixgbe: Add support for ndo_ll_poll Eliezer Tamir
2013-05-27  7:44 ` [PATCH v5 net-next 5/5] ixgbe: add extra stats " Eliezer Tamir
2013-05-28  0:35 ` [PATCH v5 net-next 0/5] net: low latency Ethernet device polling Eric Dumazet
2013-05-28  8:29   ` Eliezer Tamir

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=20130527074351.29882.51106.stgit@ladj378.jer.intel.com \
    --to=eliezer.tamir@linux.intel.com \
    --cc=alexr@mellanox.com \
    --cc=andi@firstfloor.org \
    --cc=davem@davemloft.net \
    --cc=donald.c.skidmore@intel.com \
    --cc=e1000-devel@lists.sourceforge.net \
    --cc=eilong@broadcom.com \
    --cc=eliezer@tamir.org.il \
    --cc=hpa@zytor.com \
    --cc=jesse.brandeburg@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=or.gerlitz@gmail.com \
    --cc=willemb@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).