From: jamal <hadi@cyberus.ca>
To: Benjamin LaHaise <bcrl@redhat.com>
Cc: <linux-kernel@vger.kernel.org>, <kuznet@ms2.inr.ac.ru>,
Robert Olsson <Robert.Olsson@data.slu.se>,
Ingo Molnar <mingo@elte.hu>, <netdev@oss.sgi.com>
Subject: Re: [announce] [patch] limiting IRQ load, irq-rewrite-2.4.11-B5
Date: Tue, 2 Oct 2001 08:10:00 -0400 (EDT) [thread overview]
Message-ID: <Pine.GSO.4.30.0110020724530.29541-100000@shell.cyberus.ca> (raw)
In-Reply-To: <20011002011351.A20025@redhat.com>
On Tue, 2 Oct 2001, Benjamin LaHaise wrote:
> On Mon, Oct 01, 2001 at 09:54:49PM -0400, jamal wrote:
>
> > And how does /proc/irq/NR/max_rate solve this?
> > I have a feeling you are trying to say that varying /proc/irq/NR/max_rate
> > gives opportunity for user processes to execute;
> > note, although that is bad logic, you could also modify the high and low
> > watermarks for when we have congestion in the backlog queue
> > (This is already doable via /proc)
>
> The high and low watermarks are only sufficient if the task the machine is
> performing is limited to bh mode operations. What I mean is that user space
> can be starved by the cyclic nature of the network queues: they will
> eventually be emptied, at which time more interrupts will be permitted.
>
Which hardware flow control has been doing since 2.1 days;
> > It is unfair to add any latency to a device that didnt cause or
> > contributre to the havoc.
>
> I disagree. When a machine is overloaded, everything gets slower. But a
> side effect of delaying interrupts is that more work gets done for each
> irq handler that is run and efficiency goes up. The hard part is balancing
> the two in an attempt to achieve a steady rate of progress.
>
Let me see if i understand this:
-scheme 1: shut down only actions (within a device) that are contributing
to the overload and only they get affected because they are misbehaving;
when things get better(and we know when they get better), we turn it on
again
- scheme two: shut down the IRQ which might infact include other devices
for a jiffy or two (which doesnt mean the condition got better)
Are you saying that you disagree scheme 1 is better?
> > I think you missed my point. i am saying there is more than one source of
> > interupt for that same IRQ number that you are indiscrimately shutting
> > down in a network device.
>
> You're missing the effect that irq throttling has: it results in a system
> that is effectively running in "polled" mode. Information does get
> processed, and thruput remains high, it is just that some additional
> latency is found in operations. Which is acceptable by definition as
> the system is under extreme load.
sure. Just like the giant bottom half lock is acceptable when you can do
fine grained locking ;->
Dont preach polling to me; i am already a convert and you attended the
presentation i gave. Weve had patches for months which have been running
on live system. We were just waiting for 2.5 ...
>
> > So, assuming that tx complete interupts do actually shut you down
> > (although i doubt that very much given the classical Donald Becker tx
> > descriptor prunning) pick another interupt source; lets say MII link
> > status; why do you want to kill that when it is not causing any noise but
> > is a source of good asynchronous information (that could be used for
> > example in HA systems)?
>
> That information will eventually be picked up. I doubt the extra latency
> will be of significant note. If it is, you've got realtime concerns,
> which is not our goal to address at this time.
>
You are still missing the point (by humping on the literal meaning of the
example i provide), the point is: fine grained vs shutting down the whole
IRQ.
>
> > and what is this "known safe limit"? ;->
>
> It's system dependant. It's load dependant. For a short list of the number
> of factors that you have to include to compute this:
>
> - number of cycles userspace needs to run
> - number of cache misses that userspace is forced to
> incur due to irq handlers running
> - amount of time to dedicate to the irq handler
> - variance due to error path handling
> - increased system cpu usage due to higher memory load
> - front side bus speed of cpu
> - speed of cpu
> - length of cpu pipelines
> - time spent waiting on io cycles
> .....
>
> It is non-trivial to determine a limit. And trying to tune a system
> automatically is just as hard: which factor do you choose for the system
> to attempt to tune itself with? How does that choice affect users who
> want to tune for other loads? What if latency is more important than
> dropping data?
>
> There are a lot of choices as to how we handle these situations. They
> all involve tradeoffs of one kind or another. Personally, I have a
> preference towards irq rate limiting as I have measured the tradeoff
> between latency and thruput, and by putting that control in the hands of
> the admin, the choice that is best for the real load of the system is
> not made at compile time.
>
> If you look at what other operating systems do to schedule interrupts
> as tasks and then looks at the actual cost, is it really something we
> want to do? Linux has made a point of keeping things as simple as
> possible, and it has brought us great wins because we do not have the
> overhead that other, more complicated systems have chosen. It might
> be a loss in a specific case to rate limit interrupts, but if that is
> so, just change the rate. What can you say about the dynamic self
> tuning techniques that didn't take into account that particular type
> of load? Recompiling is not always an option.
>
I am not sure where you are getting the opinion that there is recompiling
involved or how what we have is complex (the patch is much smaller than
what Ingo posted);
And no, you dont need to maintain any state of all those things in your
list; in 2.4, which is a good start, you have the system load being probed
via a second order effect i.e the growth rate of the backlog queue is a
good indicator that the system is not pulling packets off fast enough.
This is a very good measure of _all_ those items on your list. I am not
saying it is God's answer, merely pointing that it is a good indicator
which doesnt need to maintain state of 1000 items or cause additional
computations on the datapath.
We get a fairly early warning that we are about to be overloaded. We can then
shut off the offending device's _receive_ interupt source when it doesnt
heed the congestion notification advice weve been giving it. It heeds the
advice by mitigating.
In the 2.5 patch (i should say it is a clean patch to 2.4 actually and is
backward compatible) we worked around the fact that the 2.4 solution
requires a specific NIC feature (mitigation) among a lot of other things.
Infact we have already proven that mitigation is only good when you have
one or two NICs on the system.
> > What we are providing is actually a scheme to exactly measure that "known
> > safe limit" you are refering to without depending on someone having to
> > tell you "here's a good number for that 8 way xeon"
> > If there is system capacity available why the fsck is it not being used?
>
> That's a choice for the admin to make. Sometimes having reserves that aren't
> used is a safety net that people are willing to pay for. ext2 has by
> default a reserve that isn't normally used. Do people complain? No. It
> buys several useful features (resistance against fragmentation, space for
> daemon temporary files on disk full, ...) that pay dividends of the cost.
>
I am not sure whether you are trolling or not. We are talking about a
system conserving a work principle and you compare it a reservation
system.
> Is irq throttling the be all and end all? No. Can other techniques work
> better? Yes. Always? No. And nothing prevents us from using this and
> other techniques together. Please don't dismiss it solely because you
> see cases that it doesn't handle.
>
I am not dismising the whole patch. I most definetly dismiss those
two ideas i pointed out.
cheers,
jamal
next prev parent reply other threads:[~2001-10-02 12:12 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 [this message]
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
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.0110020724530.29541-100000@shell.cyberus.ca \
--to=hadi@cyberus.ca \
--cc=Robert.Olsson@data.slu.se \
--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 \
/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®