From: jamal <hadi@cyberus.ca>
To: Ingo Molnar <mingo@elte.hu>
Cc: <linux-kernel@vger.kernel.org>,
Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
Robert Olsson <Robert.Olsson@data.slu.se>,
Benjamin LaHaise <bcrl@redhat.com>, <netdev@oss.sgi.com>,
Linus Torvalds <torvalds@transmeta.com>,
Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: [announce] [patch] limiting IRQ load, irq-rewrite-2.4.11-B5
Date: Wed, 3 Oct 2001 11:56:25 -0400 (EDT) [thread overview]
Message-ID: <Pine.GSO.4.30.0110031138150.4833-100000@shell.cyberus.ca> (raw)
In-Reply-To: <Pine.LNX.4.33.0110031702280.7221-100000@localhost.localdomain>
On Wed, 3 Oct 2001, Ingo Molnar wrote:
>
> On Wed, 3 Oct 2001, jamal wrote:
>
> > No. NAPI is for any type of network activities not just for routers or
> > sniffers. It works just fine with servers. What do you see in there
> > that will make it not work with servers?
>
> eg. such solutions in tulip-NAPI-010910:
>
> /* For now we do this to avoid getting into
> IRQ mode too quickly */
>
> if( jiffies - dev->last_rx == 0 ) goto not_done;
> [...]
> not_done:
> [...]
> return 1;
this code was added by Robert to check something; cant remember the
details on that specific date. The goal is to test variuos workloads and
conditions before reaching conclusions; so it might have been valid on
that day only
Take it out and things should work just fine.
> combined with this code in the net_rx_action softirq handler:
>
> + while (!list_empty(&queue->poll_list)) {
> + struct net_device *dev;
> [...]
> + if (dev->quota <= 0 || dev->poll(dev, &budget)) {
> + local_irq_disable();
> + list_del(&dev->poll_list);
> + list_add_tail(&dev->poll_list, &queue->poll_list);
>
> while the stated goal of NAPI is to do 'intelligent, feedback based
> polling', apparently the code is not trusting its own metrics, and is
> forcing the interface into polling mode if we are still within the same 10
> msec period of time, or if we have looped 300 times (default
> netdev_max_backlog value). Not very intelligent IMO.
>
You misunderstood. This is to enforce fairness. Read the paper. When
you have one device sending 100Kpps and another sending 1pps to the stack,
you wanna make sure that the 1pps doesnt get starved -- thats what the
purpose of the above code is (hence the Round robin scheduling and the
quota per device).
> In a generic computing environment i want to spend cycles doing useful
> work, not polling. Even the quick kpolld hack [which i dropped, so please
> dont regard it as a 'competitor' patch] i consider superior to this, as i
> can renice kpolld to reduce polling. (plus kpolld sucks up available idle
> cycles as well.) Unless i royally misunderstand it, i cannot stop the
> above code from wasting my cycles, and if that is true i do not want to
> see it in the kernel proper in this form.
>
Again, you misunderstood. Please spend a few more minutes reading the code
and i should insist you read the paper ;->
The interupt just flags "i, netdev, have work to do"; the the poll thread
grabs packets off it when the softirq gets scheduled. So we dont do
unecessary polling; we only poll when there is work to be done.
In the low-load case this solution reduces to the same as interupt driven
system and scales to the system/CPU capacity.
> if the only thing done by a system is processing network packets, then
> polling is a very nice solution for high loads. So do not take my comments
> as an attack against polling.
>
The poll thread is run as softirq, just as the other half of networking is
today. And as should be because networking is extremely important as a
subsyestem.
> *if* you can make polling a success in ~90% of the time we enter
> tulip_poll() under non-specific server load (ie. not routing), then i
> think you have really good metrics.
we can make it 100% successful; i mentioned that we only do work, if there
is work to be done.
cheers,
jamal
next prev parent reply other threads:[~2001-10-03 15:59 UTC|newest]
Thread overview: 151+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-02 0:41 jamal
2001-10-02 1:04 ` Benjamin LaHaise
2001-10-02 1:54 ` jamal
2001-10-02 5:13 ` Benjamin LaHaise
2001-10-02 5:55 ` Ben Greear
2001-10-03 9:22 ` Ingo Molnar
2001-10-03 14:06 ` David Brownell
2001-10-02 12:10 ` jamal
2001-10-02 22:00 ` jamal
2001-10-03 8:34 ` Ingo Molnar
2001-10-03 9:29 ` Helge Hafting
2001-10-03 12:49 ` jamal
2001-10-03 14:51 ` Ingo Molnar
2001-10-03 15:14 ` jamal
2001-10-03 17:28 ` Ingo Molnar
2001-10-04 0:53 ` jamal
2001-10-04 6:28 ` Ingo Molnar
2001-10-04 11:34 ` jamal
2001-10-04 17:40 ` Andreas Dilger
2001-10-04 18:33 ` jamal
2001-10-04 6:50 ` Ben Greear
2001-10-04 6:52 ` Ingo Molnar
2001-10-04 11:50 ` jamal
2001-10-04 6:55 ` Jeff Garzik
2001-10-04 6:56 ` Ingo Molnar
2001-10-04 21:28 ` Alex Bligh - linux-kernel
2001-10-04 21:49 ` Benjamin LaHaise
2001-10-04 23:20 ` Alex Bligh - linux-kernel
2001-10-04 23:26 ` Benjamin LaHaise
2001-10-04 23:47 ` Robert Love
2001-10-04 23:51 ` Linus Torvalds
2001-10-05 0:00 ` Ben Greear
2001-10-05 0:18 ` Davide Libenzi
2001-10-05 2:01 ` jamal
2001-10-04 22:01 ` Simon Kirby
2001-10-04 23:25 ` Alex Bligh - linux-kernel
2001-10-04 23:34 ` Simon Kirby
2001-10-04 22:10 ` Alan Cox
2001-10-04 23:28 ` Alex Bligh - linux-kernel
2001-10-05 15:22 ` Robert Olsson
2001-10-03 9:38 ` Ingo Molnar
2001-10-03 13:03 ` jamal
2001-10-03 13:25 ` jamal
2001-10-03 15:28 ` Ingo Molnar
2001-10-03 15:56 ` jamal [this message]
2001-10-03 16:51 ` Ingo Molnar
2001-10-04 0:46 ` jamal
2001-10-08 0:31 ` Andrea Arcangeli
2001-10-08 4:58 ` Bernd Eckenfels
2001-10-08 15:00 ` Alan Cox
2001-10-08 15:03 ` Jeff Garzik
2001-10-08 15:12 ` Alan Cox
2001-10-08 15:09 ` jamal
2001-10-08 15:22 ` Alan Cox
2001-10-08 15:20 ` jamal
2001-10-08 15:35 ` Alan Cox
2001-10-08 15:57 ` jamal
2001-10-08 16:11 ` Alan Cox
2001-10-08 16:11 ` jamal
2001-10-10 16:26 ` Pavel Machek
2001-10-10 16:25 ` Pavel Machek
2001-10-08 15:24 ` Andrea Arcangeli
2001-10-08 15:35 ` Alan Cox
2001-10-08 15:19 ` Andrea Arcangeli
2001-10-08 15:10 ` bill davidsen
2001-10-03 21:08 ` Robert Olsson
2001-10-03 22:22 ` Andreas Dilger
2001-10-04 17:32 ` Davide Libenzi
2001-10-05 14:52 ` Robert Olsson
2001-10-05 18:48 ` Andreas Dilger
2001-10-05 19:07 ` Davide Libenzi
2001-10-05 19:17 ` kuznet
2001-10-08 13:58 ` jamal
2001-10-08 17:42 ` Robert Olsson
2001-10-08 17:39 ` jamal
2001-10-07 6:11 ` Robert Olsson
2001-10-03 16:53 ` kuznet
2001-10-03 17:06 ` Ingo Molnar
2001-10-04 0:44 ` jamal
2001-10-04 6:35 ` Ingo Molnar
2001-10-04 11:41 ` jamal
2001-10-05 16:42 ` kuznet
2001-10-04 13:05 ` Robert Olsson
2001-10-03 19:03 ` Benjamin LaHaise
2001-10-04 1:10 ` jamal
2001-10-04 1:30 ` Benjamin LaHaise
2001-10-03 22:31 ` Rob Landley
2001-10-04 1:39 ` jamal
2001-10-03 15:42 ` Ben Greear
2001-10-03 15:58 ` jamal
2001-10-03 16:09 ` Ben Greear
2001-10-03 16:14 ` Ingo Molnar
2001-10-03 16:20 ` Jeff Garzik
2001-10-03 16:33 ` Linus Torvalds
2001-10-03 17:25 ` Ingo Molnar
2001-10-03 18:11 ` Linus Torvalds
2001-10-03 20:41 ` Jeremy Hansen
2001-10-03 20:02 ` Simon Kirby
2001-10-04 1:04 ` jamal
2001-10-04 6:47 ` Ben Greear
2001-10-04 7:41 ` Henning P. Schmiedehausen
2001-10-04 16:09 ` Ben Greear
2001-10-04 17:32 ` Henning P. Schmiedehausen
2001-10-04 18:03 ` Ben Greear
2001-10-04 18:30 ` Christopher E. Brown
2001-10-04 11:47 ` jamal
2001-10-04 15:56 ` Ben Greear
2001-10-04 18:23 ` jamal
2001-10-04 6:50 ` Ingo Molnar
2001-10-04 11:49 ` jamal
2001-10-04 8:45 ` Simon Kirby
2001-10-04 11:54 ` jamal
2001-10-04 15:03 ` Tim Hockin
2001-10-04 18:55 ` Ion Badulescu
2001-10-04 19:00 ` jamal
2001-10-04 21:16 ` Ion Badulescu
2001-10-04 4:12 ` bill davidsen
2001-10-04 18:16 ` Alan Cox
2001-10-03 13:38 ` Robert Olsson
2001-10-04 21:22 ` Alex Bligh - linux-kernel
2001-10-05 14:32 ` Robert Olsson
2001-10-03 8:38 ` Ingo Molnar
2001-10-04 3:50 ` bill davidsen
2001-10-02 17:03 ` Robert Olsson
2001-10-02 17:37 ` jamal
2001-10-02 19:46 ` Andreas Dilger
-- strict thread matches above, loose matches on Subject: below --
2001-10-08 14:45 jamal
2001-10-09 0:36 ` Scott Laird
2001-10-09 3:17 ` jamal
2001-10-09 4:04 ` Werner Almesberger
2001-10-04 8:25 Magnus Redin
2001-10-04 11:39 ` Trever L. Adams
[not found] <200110031811.f93IBoN10026@penguin.transmeta.com>
2001-10-03 18:23 ` Ingo Molnar
2001-10-04 9:19 ` BALBIR SINGH
2001-10-04 9:22 ` Ingo Molnar
2001-10-04 9:49 ` BALBIR SINGH
2001-10-04 10:25 ` Ingo Molnar
2001-10-07 20:37 ` Andrea Arcangeli
2001-10-03 14:15 Manfred Spraul
2001-10-03 15:09 ` jamal
2001-10-03 18:37 ` Davide Libenzi
2001-10-01 22:16 Ingo Molnar
2001-10-01 22:26 ` Tim Hockin
2001-10-01 22:50 ` Ingo Molnar
2001-10-01 22:36 ` Andreas Dilger
2001-10-01 22:50 ` Ben Greear
2001-10-02 14:30 ` Alan Cox
2001-10-02 20:51 ` Ingo Molnar
2001-10-01 23:03 ` Linus Torvalds
2001-10-02 6:50 ` Marcus Sundberg
2001-10-03 8:47 ` Ingo Molnar
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=Pine.GSO.4.30.0110031138150.4833-100000@shell.cyberus.ca \
--to=hadi@cyberus.ca \
--cc=Robert.Olsson@data.slu.se \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=bcrl@redhat.com \
--cc=kuznet@ms2.inr.ac.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=netdev@oss.sgi.com \
--cc=torvalds@transmeta.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
all inboxes | Powered by JetHome®