From: Krishna Kumar <krkumar2@in.ibm.com>
To: johnpol@2ka.mipt.ru, herbert@gondor.apana.org.au,
hadi@cyberus.ca, kaber@trash.net,
shemminger@linux-foundation.org, davem@davemloft.net
Cc: jagana@us.ibm.com, Robert.Olsson@data.slu.se,
peter.p.waskiewicz.jr@intel.com, kumarkr@linux.ibm.com,
xma@us.ibm.com, gaagaan@gmail.com, netdev@vger.kernel.org,
rdreier@cisco.com, rick.jones2@hp.com, mcarlson@broadcom.com,
jeff@garzik.org, general@lists.openfabrics.org,
mchan@broadcom.com, tgraf@suug.ch,
Krishna Kumar <krkumar2@in.ibm.com>,
sri@us.ibm.com
Subject: [PATCH 1/10 Rev4] [Doc] HOWTO Documentation for batching
Date: Wed, 22 Aug 2007 13:58:58 +0530 [thread overview]
Message-ID: <20070822082858.11964.87377.sendpatchset@localhost.localdomain> (raw)
In-Reply-To: <20070822082839.11964.63503.sendpatchset@localhost.localdomain>
Add Documentation describing batching skb xmit capability.
Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
---
batching_skb_xmit.txt | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 78 insertions(+)
diff -ruNp org/Documentation/networking/batching_skb_xmit.txt new/Documentation/networking/batching_skb_xmit.txt
--- org/Documentation/networking/batching_skb_xmit.txt 1970-01-01 05:30:00.000000000 +0530
+++ new/Documentation/networking/batching_skb_xmit.txt 2007-08-22 10:21:19.000000000 +0530
@@ -0,0 +1,78 @@
+ HOWTO for batching skb xmit support
+ -----------------------------------
+
+Section 1: What is batching skb xmit
+Section 2: How batching xmit works vs the regular xmit
+Section 3: How drivers can support batching
+Section 4: How users can work with batching
+
+
+Introduction: Kernel support for batching skb
+----------------------------------------------
+
+A new capability to support xmit of multiple skbs is provided in the netdevice
+layer. Drivers which enable this capability should be able to process multiple
+skbs in a single call to their xmit handler.
+
+
+Section 1: What is batching skb xmit
+-------------------------------------
+
+ This capability is optionally enabled by a driver by setting the
+ NETIF_F_BATCH_SKBS bit in dev->features. The pre-requisite for a
+ driver to use this capability is that it should have a reasonably
+ sized hardware queue that can process multiple skbs.
+
+
+Section 2: How batching xmit works vs the regular xmit
+-------------------------------------------------------
+
+ The network stack gets called from upper layer protocols with a single
+ skb to transmit. This skb is first enqueue'd and an attempt is made to
+ transmit it immediately (via qdisc_run). However, events like tx lock
+ contention, tx queue stopped, etc, can result in the skb not getting
+ sent out and it remains in the queue. When the next xmit is called or
+ when the queue is re-enabled, qdisc_run could potentially find
+ multiple packets in the queue, and iteratively send them all out
+ one-by-one.
+
+ Batching skb xmit is a mechanism to exploit this situation where all
+ skbs can be passed in one shot to the device. This reduces driver
+ processing, locking at the driver (or in stack for ~LLTX drivers)
+ gets amortized over multiple skbs, and in case of specific drivers
+ where every xmit results in a completion processing (like IPoIB) -
+ optimizations can be made in the driver to request a completion for
+ only the last skb that was sent which results in saving interrupts
+ for every (but the last) skb that was sent in the same batch.
+
+ Batching can result in significant performance gains for systems that
+ have multiple data stream paths over the same network interface card.
+
+
+Section 3: How drivers can support batching
+---------------------------------------------
+
+ Batching requires the driver to set the NETIF_F_BATCH_SKBS bit in
+ dev->features.
+
+ The driver's xmit handler should be modified to process multiple skbs
+ instead of one skb. The driver's xmit handler is called either with a
+ skb to transmit or NULL skb, where the latter case should be handled
+ as a call to xmit multiple skbs. This is done by sending out all skbs
+ in the dev->skb_blist list (where it was added by the core stack).
+
+
+Section 4: How users can work with batching
+---------------------------------------------
+
+ Batching can be disabled for a particular device, e.g. on desktop
+ systems if only one stream of network activity for that device is
+ taking place, since performance could be slightly affected due to
+ extra processing that batching adds (unless packets are getting
+ sent fast resulting in stopped queue's). Batching can be enabled if
+ more than one stream of network activity per device is being done,
+ e.g. on servers; or even desktop usage with multiple browser, chat,
+ file transfer sessions, etc.
+
+ Per device batching can be enabled/disabled by passing 'on' or 'off'
+ respectively to ethtool.
next prev parent reply other threads:[~2007-08-22 8:27 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-22 8:28 [PATCH 0/10 Rev4] Implement skb batching and support in IPoIB Krishna Kumar
2007-08-22 8:28 ` Krishna Kumar [this message]
2007-08-22 15:50 ` [ofa-general] Re: [PATCH 1/10 Rev4] [Doc] HOWTO Documentation for batching Randy Dunlap
2007-08-23 2:48 ` Krishna Kumar2
2007-08-22 8:29 ` [PATCH 2/10 Rev4] [core] Add skb_blist & support " Krishna Kumar
2007-08-22 8:29 ` [PATCH 3/10 Rev4] [sched] Modify qdisc_run to support batching Krishna Kumar
2007-08-22 8:29 ` [PATCH 4/10 Rev4] [ethtool] Add ethtool support Krishna Kumar
2007-08-22 8:30 ` [PATCH 5/10 Rev4] [IPoIB] Header file changes Krishna Kumar
2007-08-22 8:30 ` [PATCH 6/10 Rev4] [IPoIB] CM & Multicast changes Krishna Kumar
2007-08-22 8:30 ` [PATCH 7/10 Rev4] [IPoIB] Verbs changes Krishna Kumar
2007-08-22 8:31 ` [PATCH 8/10 Rev4] [IPoIB] Post and work completion handler changes Krishna Kumar
2007-08-22 8:31 ` [PATCH 9/10 Rev4] [IPoIB] Implement batching Krishna Kumar
2007-08-22 8:31 ` [PATCH 10/10 Rev4] [E1000] " Krishna Kumar
2007-08-22 14:39 ` [ofa-general] " Kok, Auke
2007-08-23 2:44 ` Krishna Kumar2
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=20070822082858.11964.87377.sendpatchset@localhost.localdomain \
--to=krkumar2@in.ibm.com \
--cc=Robert.Olsson@data.slu.se \
--cc=davem@davemloft.net \
--cc=gaagaan@gmail.com \
--cc=general@lists.openfabrics.org \
--cc=hadi@cyberus.ca \
--cc=herbert@gondor.apana.org.au \
--cc=jagana@us.ibm.com \
--cc=jeff@garzik.org \
--cc=johnpol@2ka.mipt.ru \
--cc=kaber@trash.net \
--cc=kumarkr@linux.ibm.com \
--cc=mcarlson@broadcom.com \
--cc=mchan@broadcom.com \
--cc=netdev@vger.kernel.org \
--cc=peter.p.waskiewicz.jr@intel.com \
--cc=rdreier@cisco.com \
--cc=rick.jones2@hp.com \
--cc=shemminger@linux-foundation.org \
--cc=sri@us.ibm.com \
--cc=tgraf@suug.ch \
--cc=xma@us.ibm.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.