From: Eric Dumazet <eric.dumazet@gmail.com>
To: John Lumby <johnlumby@hotmail.com>
Cc: Francois Romieu <romieu@fr.zoreil.com>,
netdev@vger.kernel.org, Ben Hutchings <bhutchings@solarflare.com>,
nic_swsd@realtek.com
Subject: Re: r8169 : always copying the rx buffer to new skb
Date: Wed, 27 Apr 2011 05:57:37 +0200 [thread overview]
Message-ID: <1303876657.2699.22.camel@edumazet-laptop> (raw)
In-Reply-To: <4DB77D03.9070507@hotmail.com>
Le mardi 26 avril 2011 à 22:18 -0400, John Lumby a écrit :
> Anyone have any further thoughts on the proposal to avoid memcpy'ing?
> (see earlier post)
>
> I also have a question concerning NAPI. I've found that much of the
> CPU saved from not memcpy'ing is burned in extra rx_interrupt'ing, and
> much of that seems to be wasted (no new packets). So the actual
> benefit is rather less than I think should be possible.
>
> I've tried some tinkering with the napi weight but can't find any
> setting which really improves the ratio of rx packets to hard interrupts
> significantly. The problem seems to be that each successive
> rtl8169_poll() is driven too soon after the last one (in this
> particular workload). The napi weight doesn't directly influence that.
>
> So - question :
> is there any way, when returning from rtl8169_poll, to tell napi
> something like :
> " finish this interrupt context and let something else run on this
> CPU (always CPU0 on my machine) BUT reschedule another napi poll on
> this same device at some time after that "
> the point being that rtl8169_poll will, for this case, NOT re-enable
> the NIC's napi interrupts, in the hope that maybe some user work can be
> dispatched, so something else will have to schedule the next napi
> poll for it. Conceptually, if rtl8169_poll finds no rx work done
> on this call, it wants to cause a yield() and then try again.
> Except it can't from within the interrupt.
>
> I appreciate this could lead to delays in handling new work so might be
> dangerous, but it seems to me to be in line with NAPI objectives so I
> wanted to try it . But don't know how. Any hints or thoughts
> appreciated.
Answer is no. There is no such facility in NAPI infrastructure.
You want to introduce a timer based polling. Some old pre-NAPI drivers
were doing that. Its OK when you have one device to handle, it can be a
nightmare when you mix several devices.
next prev parent reply other threads:[~2011-04-27 3:57 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-18 17:08 r8169 : always copying the rx buffer to new skb John Lumby
2011-04-18 17:27 ` Ben Hutchings
2011-04-18 21:26 ` John Lumby
2011-04-20 19:13 ` Francois Romieu
2011-04-21 3:41 ` John Lumby
2011-04-21 3:52 ` John Lumby
2011-04-27 2:18 ` John Lumby
2011-04-27 3:57 ` Eric Dumazet [this message]
2011-04-27 20:35 ` Francois Romieu
2011-04-29 1:55 ` John Lumby
2011-04-29 4:54 ` Eric Dumazet
2011-05-02 19:04 ` Chris Friesen
2011-05-03 11:59 ` hayeswang
2011-04-18 18:21 ` Francois Romieu
-- strict thread matches above, loose matches on Subject: below --
2011-06-27 22:54 John Lumby
2011-06-28 7:55 ` Francois Romieu
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=1303876657.2699.22.camel@edumazet-laptop \
--to=eric.dumazet@gmail.com \
--cc=bhutchings@solarflare.com \
--cc=johnlumby@hotmail.com \
--cc=netdev@vger.kernel.org \
--cc=nic_swsd@realtek.com \
--cc=romieu@fr.zoreil.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