public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Stephen Hemminger <shemminger@vyatta•com>
To: Ben Hutchings <bhutchings@solarflare•com>
Cc: Junchang Wang <junchangwang@gmail•com>,
	romieu@fr•zoreil.com, netdev@vger•kernel.org
Subject: Re: Question about way that NICs deliver packets to the kernel
Date: Thu, 15 Jul 2010 08:59:17 -0700	[thread overview]
Message-ID: <20100715085917.6a9cdd88@nehalam> (raw)
In-Reply-To: <1279204417.2118.12.camel@achroite.uk.solarflarecom.com>

On Thu, 15 Jul 2010 15:33:37 +0100
Ben Hutchings <bhutchings@solarflare•com> wrote:

> On Thu, 2010-07-15 at 22:24 +0800, Junchang Wang wrote:
> > Hi list,
> > My understand of the way that NICs deliver packets to the kernel is
> > as follows. Correct me if any of this is wrong. Thanks.
> > 
> > 1) The device buffer is fixed. When the kernel is acknowledged arrival of a 
> > new packet, it dynamically allocate a new skb and copy the packet into it. 
> > For example, 8139too.
> > 
> > 2) The device buffer is mapped by streaming DMA. When the kernel is 
> > acknowledged arrival of a new packet, it unmaps the region previously mapped. 
> > Obviously, there is NO memcpy operation. Additional cost is streaming DMA 
> > map/unmap operations. For example, e100 and e1000.
> > 
> > Here comes my question:
> > 1) Is there a principle indicating which one is better? Is streaming DMA
> > map/unmap operations more expensive than memcpy operation?
> 
> DMA should result in lower CPU usage and higher maximum performance.
> 
> > 2) Why does r8169 bias towards the first approach even if it support both? I 
> > convert r8169 to the second one and get a 5% performance boost. Below is result
> > running netperf TCP_STREAM test with 1.6K byte packet length.
> >         scheme 1    scheme 2    Imp.
> > r8169     683M        718M       5%
> [...]
> 
> You should also compare the CPU usage.

Also many drivers copy small receives into a new buffer
which saves space and often gives better performance.

  reply	other threads:[~2010-07-15 15:59 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-15 14:24 Question about way that NICs deliver packets to the kernel Junchang Wang
2010-07-15 14:33 ` Ben Hutchings
2010-07-15 15:59   ` Stephen Hemminger [this message]
2010-07-16  7:05   ` Junchang Wang
2010-07-16 17:58     ` Rick Jones
2010-07-20  1:15       ` Junchang Wang
2010-07-20 17:16         ` Rick Jones
2010-07-25 14:18           ` Junchang Wang
2010-07-15 21:12 ` Francois Romieu
2010-07-16  7:35   ` Junchang Wang

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=20100715085917.6a9cdd88@nehalam \
    --to=shemminger@vyatta$(echo .)com \
    --cc=bhutchings@solarflare$(echo .)com \
    --cc=junchangwang@gmail$(echo .)com \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=romieu@fr$(echo .)zoreil.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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