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.
next prev parent 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