From: Rik van Riel <riel@conectiva.com.br>
To: "Scott F. Kaplan" <sfkaplan@cs.amherst.edu>
Cc: linux-mm@kvack.org
Subject: Re: [PATCH] Prevent OOM from killing init
Date: Fri, 30 Mar 2001 20:03:33 -0300 (BRST) [thread overview]
Message-ID: <Pine.LNX.4.21.0103301951090.23859-100000@imladris.rielhome.conectiva> (raw)
In-Reply-To: <Pine.LNX.4.21.0103292154330.31908-100000@localhost.localdomain>
On Thu, 29 Mar 2001, Scott F. Kaplan wrote:
> On Tue, 27 Mar 2001, Rik van Riel wrote:
>
> > I plan to "detect" thrashing by keeping a kind of "swap load
> > average", that is, measuring in the same way as the load average how
> > many tasks are waiting on page faults simultaneously.
>
> This seems a practical metric. It is a bit indirect, as it's not
> measuring the reference behavior of the processes. For example, a
> couple of processes may change phases, and make it seem, via heavy
> faulting for a time, that memory is overcommitted. However, that
> faulting doesn't necessarily represent the inability of main memory to
> cache the critical working sets of each active process. It's not
> "thrashing" in the sense that the CPU is doomed not to have ready
> processes to run.
If 3 processes get the CPU and 2 processes never get a
chance to run (and are thrashing), that too is an issue
I'd like to get solved.
> > When this swap load average will get too high (too high in
> > relation to the "normal" load average ???) and possibly a few
> > other conditions are true we will select a process to suspend.
>
> I think these may be some of the biggest questions. Detecting that
> there is serious strain on main memory can be done. Detecting whether
> or not it's worth trying to deactivate a process is another
> matter...It's an expensive proposition, and fundamentally changes the
> fairness with which the victim process is treated.
It's like a 2nd level scheduler, where processes become 'victim'
process in turns. But indeed, I realise that this doesn't solve
the selection problem ;)
> > This process will not be suspended immediately, but only on the next
> > page fault. It's pages will be stolen by kswapd in the normal way.
>
> That makes sense...but which process? There are old heuristics
> (youngest process, oldest, largest resident set, smallest, random,
> etc.). Some of them have been shown to work better than others, but
> they're all "blind", in that there's no attempt to determine whether
> or not the other processes, left active, will really receive the extra
> space that they need once a process is selected. That would seem to
> be a useful piece of information.
>
> An example -- one, nasty, greedy process that uses so much space that
> it could force the deactivation of nearly all of the other processes.
> If you do that, it's unfair to too many processes. If you deactivate
> the hog, then every time you bring it back, it will cause heavy
> paging, and a deactivation. Ugh.
But it should cause deactivation of OTHER processes so every
process gets a chance to run...
> > We will not start reactivating processes until the swap load is
> > below the threshold again (which is automatically a reasonable
> > indication because it's a long-term floating average).
>
> It's good that this load doesn't fluctuate too quickly. However,
> that's no guarantee that a re-activated process won't cause
> overcommitment again (depending on which process was selected),
> leading to a nasty oscilatting behavior. What if the load doesn't
> drop below the threshold for a long time? Starvation is no fun,
> especially if that was your process.
The "trick" here would be to have the SAME watermark for suspending
and waking up processes and making sure that both the "swap load
average" and the rate at which processes get reactivated are slowly
changing so the re/de-activations don't cause their own thrashing.
> > Definately. You can count on me to help think about these things
> > and help testing, etc...
>
> Delighted to hear it! I have more questions than answers about this
> problem, and I don't think it's been given sufficient attention
> anywhere. Correct me if I'm wrong (please!), but I think few modern
> systems even *try* to detect overcommitment, let alone do something
> about it. It certainly seems that for some uses, a system should have
> the option of saving the rest of the workload by unfairly sacrificing
> some process. (And for other uses, such actions would be less
> acceptable.)
When memory is severely overcommitted, things will get slow.
What I want to make sure of is that things won't be slowing
down for one user every time while the other user always gets
to use his processes normally.
One thing I would like to do is penalise process space. One
metric we could use for this is to keep a process suspended
longer when it is bigger. For example, if we do 5 MB of swap
IO per second we could leave a 20 MB process suspended for
a minimum of 20/5 * SWAP_PENALTY = 4 * SWAP_PENALTY seconds,
while an "innocent" editor or mail reader will be suspended
for less time.
regards,
Rik
--
Virtual memory is like a game you can't win;
However, without VM there's truly nothing to lose...
http://www.surriel.com/
http://www.conectiva.com/ http://distro.conectiva.com.br/
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux.eu.org/Linux-MM/
next prev parent reply other threads:[~2001-03-30 23:03 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-03-21 22:54 Patrick O'Rourke
2001-03-21 23:11 ` Eli Carter
2001-03-21 23:40 ` Patrick O'Rourke
2001-03-21 23:48 ` Rik van Riel
2001-03-22 8:14 ` Eric W. Biederman
2001-03-22 9:24 ` Rik van Riel
2001-03-22 19:29 ` Philipp Rumpf
2001-03-22 11:47 ` Guest section DW
2001-03-22 15:01 ` Rik van Riel
2001-03-22 19:04 ` Guest section DW
2001-03-22 23:10 ` Jordi Polo
2001-03-22 16:41 ` Eric W. Biederman
2001-03-22 20:28 ` Stephen Clouse
2001-03-22 21:01 ` Ingo Oeser
2001-03-22 21:23 ` Alan Cox
2001-03-22 22:00 ` Guest section DW
2001-03-22 22:12 ` Ed Tomlinson
2001-03-22 22:52 ` Alan Cox
2001-03-22 23:27 ` Guest section DW
2001-03-22 23:37 ` Rik van Riel
2001-03-26 19:04 ` James Antill
2001-03-26 20:05 ` Rik van Riel
2001-03-22 23:40 ` Alan Cox
2001-03-23 20:09 ` Szabolcs Szakacsits
2001-03-23 22:21 ` Alan Cox
2001-03-23 22:37 ` Szabolcs Szakacsits
2001-03-23 19:57 ` Szabolcs Szakacsits
2001-03-22 22:10 ` Doug Ledford
2001-03-22 22:53 ` Alan Cox
2001-03-22 23:30 ` Doug Ledford
2001-03-22 23:40 ` Alan Cox
2001-03-22 23:43 ` Stephen Clouse
2001-03-23 19:26 ` Szabolcs Szakacsits
2001-03-23 20:41 ` Paul Jakma
2001-03-23 21:58 ` george anzinger
2001-03-24 5:55 ` Rik van Riel
2001-03-24 8:04 ` Mike Galbraith
2001-03-27 14:05 ` Scott F. Kaplan
2001-03-28 0:00 ` Rik van Riel
2001-03-30 3:18 ` Scott F. Kaplan
2001-03-30 23:03 ` Rik van Riel [this message]
2001-03-23 22:18 ` Szabolcs Szakacsits
2001-03-24 2:08 ` Paul Jakma
2001-03-23 1:31 ` Michael Peddemors
2002-03-23 0:33 ` Martin Dalecki
2001-03-22 23:53 ` Rik van Riel
2002-03-23 1:21 ` Martin Dalecki
2001-03-23 0:20 ` Stephen Clouse
2002-03-23 1:30 ` Martin Dalecki
2001-03-23 1:37 ` Rik van Riel
2001-03-23 10:48 ` Martin Dalecki
2001-03-23 14:56 ` Rik van Riel
2001-03-23 16:43 ` Guest section DW
2001-03-24 5:57 ` Rik van Riel
2001-03-25 16:35 ` Guest section DW
2001-03-23 17:26 ` James A. Sutherland
2001-03-23 17:32 ` Alan Cox
2001-03-23 18:58 ` Martin Dalecki
2001-03-23 19:45 ` Jonathan Morton
2001-03-23 23:26 ` Eric W. Biederman
2001-03-25 13:54 ` [PATCH] OOM handling Martin Dalecki
2001-03-25 15:06 ` Rik van Riel
2001-03-25 15:20 ` Martin Dalecki
2001-03-25 17:08 ` Rik van Riel
2001-03-25 15:44 ` Jonathan Morton
2001-03-25 15:47 ` Martin Dalecki
2001-03-25 16:36 ` Jonathan Morton
2001-03-26 21:34 ` Kevin Buhr
2001-03-26 22:00 ` Jonathan Morton
2001-03-25 15:30 ` [PATCH] Prevent OOM from killing init Martin Dalecki
2001-03-25 20:47 ` Stephen Satchell
2001-03-25 21:51 ` [PATCH] non-overcommit memory, improved OOM handling, safety margin (was Re: Prevent OOM from killing init) Jonathan Morton
2001-03-27 15:23 ` Pavel Machek
2001-03-23 20:16 ` [PATCH] Prevent OOM from killing init Jordi Polo
2001-03-24 0:03 ` Guest section DW
2001-03-24 7:52 ` Doug Ledford
2001-03-22 14:53 ` Patrick O'Rourke
2001-03-22 19:24 ` Philipp Rumpf
2001-03-22 22:20 ` James A. Sutherland
2001-03-23 17:31 ` Szabolcs Szakacsits
2001-03-24 5:54 ` Rik van Riel
2001-03-24 6:55 ` Juha Saarinen
2001-03-22 11:08 Heusden, Folkert van
[not found] <4605B269DB001E4299157DD1569079D2809930@EXCHANGE03.plaza.ds.adp.com>
2001-03-22 16:29 ` Rik van Riel
2001-03-22 18:32 ` Christian Bodmer
[not found] <20010323015358Z129164-406+3041@vger.kernel.org>
2001-03-23 7:04 ` Rik van Riel
2001-03-23 11:28 ` Guest section DW
2001-03-23 14:50 ` Eric W. Biederman
2001-03-23 17:21 ` Guest section DW
2001-03-23 20:18 ` Paul Jakma
2001-03-24 20:19 ` Jesse Pollard
2001-03-23 23:48 ` Eric W. Biederman
2001-03-23 9:28 Heusden, Folkert van
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.LNX.4.21.0103301951090.23859-100000@imladris.rielhome.conectiva \
--to=riel@conectiva.com.br \
--cc=linux-mm@kvack.org \
--cc=sfkaplan@cs.amherst.edu \
/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