From: Jonathan Morton <chromi@cyberspace.org>
To: "James A. Sutherland" <jas88@cam.ac.uk>,
Dave McCracken <dmc@austin.ibm.com>
Cc: linux-mm@kvack.org
Subject: Re: suspend processes at load (was Re: a simple OOM ...)
Date: Thu, 19 Apr 2001 21:23:34 +0100 [thread overview]
Message-ID: <l03130300b704f22fc837@[192.168.239.105]> (raw)
In-Reply-To: <mibudt848g9vrhaac88qjdpnaut4hajooa@4ax.com>
>>It appears to me that the end result of all this is about the same as
>>suspending a few selected processes. Under your algorithm the processes
>>that have no guaranteed working set make no real progress and the others
>>get to run. It seems like a significant amount of additional overhead to
>>end up with the same result. Additionally, those processes will be
>>generating large numbers of page faults as they fight over the scrap of
>>memory they have. Using the suspension algorithm they'll be removed
>>entirely from running, this freeing up resources for the remaining
>>processes.
>
>That's my suspicion too: The "strangled" processes eat up system
>resources and still get nowhere (no win there: might as well suspend
>them until they can run properly!) and you are wasting resources which
>could be put to good use by other processes.
>
>More to the point, though, what about the worst case, where every
>process is thrashing? With my approach, some processes get suspended,
>others run to completion freeing up resources for others. With this
>approach, every process will still thrash indefinitely: perhaps the
>effects on other processes will be reduced, but you don't actually get
>out of the hole you're in!
My suggestion is not written in competition with the suspension idea, but
as a significant improvement to the current situation. I also believe that
my suggestion can be implemented very cheaply and (mostly) with O(1)
complexity.
Case study: my 256Mb RAM box with arbitrary amount of swap.
Load X, a few system monitors, and XMMS. XMMS on this configuration
consumes about 9Mb RAM and probably has a working set well below 4Mb. Now
load 3 synthetic memory hogs with essentially infinite working sets. XMMS
will soon begin to stutter as it is repeatedly paged in and out arbitrarily
by the rather poor NRU algorithm Linux uses. Upon loading the fourth
memory hog, XMMS and X will stop working altogether, and it becomes
impossible to log in either locally or remotely. Usually when this
happens, I am forced to hit the reset switch.
With the working set algorithm I proposed, the active portions of XMMS, X
and all other processes would be kept in physical memory, preventing the
stuttering and subsequent failure. Login processes would also continue to
operate correctly, if with a little delay as the process is initially paged
in. The memory hogs will thrash themselves and make *slow* progress (this
is NOT the same as *no* progress), but their impact on the system at large
is *much* less than at present. Remember that processes unrelated to the
swap activity can continue to operate while the disk and swap are in use!
Now for the worst-case scenario, where no active process on the system has
a working set small enough to be given it's entire share. For this
example, I will use an 8Mb RAM box with 1.5Mb used by the kernel and a
total of 200Kb reserved for buffers, cache and other sundry items. There
are 10 memory hogs running on this system - each of their working sets is
far larger than the physical memory on the system. There are no other
processes running, but are present. Obviously the system is thrashing, but
because each memory hog gets to keep several hundred Kb of itself resident
at a time, progress is still made.
On the above system, suppose root wants to log in and kill some of the
thrashing processes. At present, this would not be possible (as on the
256Mb box), because swapped-in pages get thrown out even before they can be
used by the login process. With the working set algorithm, pages used by
the login processes would be forced to remain resident until they were no
longer needed, and root can log in and deal with the situation.
Now consider if 100 memory hogs are present on the 8Mb box. Each will
effectively have 67Kb to work in - thrashing still definitely occurs, but
the system is still alive. Root wants to log in - and login gets to keep
66K of resident pages at a time in the *worst* case, and may even be able
to keep *all* of itself resident (depending on the tunable parameter - the
number of pages reserved for each large-working-set process). I think 66K
is enough to keep a login process happy.
I repeat my request for a precisely-defined suspension algorithm. I would
like to consider how well it performs in the above 3 scenarios,
particularly in the last case where there are approximately 100 processes
to suspend at once before root can log in successfully.
--------------------------------------------------------------
from: Jonathan "Chromatix" Morton
mail: chromi@cyberspace.org (not for attachments)
big-mail: chromatix@penguinpowered.com
uni-mail: j.d.morton@lancaster.ac.uk
The key to knowledge is not to rely on people to teach you it.
Get VNC Server for Macintosh from http://www.chromatix.uklinux.net/vnc/
-----BEGIN GEEK CODE BLOCK-----
Version 3.12
GCS$/E/S dpu(!) s:- a20 C+++ UL++ P L+++ E W+ N- o? K? w--- O-- M++$ V? PS
PE- Y+ PGP++ t- 5- X- R !tv b++ DI+++ D G e+ h+ r++ y+(*)
-----END GEEK CODE BLOCK-----
--
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-04-19 20:23 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-04-19 14:03 Jonathan Morton
2001-04-19 18:25 ` Dave McCracken
2001-04-19 18:32 ` James A. Sutherland
2001-04-19 20:23 ` Jonathan Morton [this message]
2001-04-20 12:14 ` Szabolcs Szakacsits
2001-04-20 12:02 ` Jonathan Morton
2001-04-20 14:48 ` Dave McCracken
2001-04-21 5:49 ` James A. Sutherland
2001-04-21 19:16 ` Joseph A. Knapka
2001-04-21 19:41 ` Jonathan Morton
2001-04-22 10:08 ` James A. Sutherland
2001-04-22 16:53 ` Jonathan Morton
2001-04-22 17:06 ` James A. Sutherland
2001-04-22 18:18 ` Jonathan Morton
2001-04-22 18:57 ` Rik van Riel
2001-04-22 19:41 ` James A. Sutherland
2001-04-22 20:33 ` Jean Francois Martinez
2001-04-22 20:21 ` Jonathan Morton
2001-04-22 20:36 ` Jonathan Morton
2001-04-22 19:01 ` James A. Sutherland
2001-04-22 19:11 ` Rik van Riel
2001-04-22 20:36 ` James A. Sutherland
2001-04-22 19:30 ` Jonathan Morton
2001-04-22 20:35 ` James A. Sutherland
2001-04-22 20:41 ` Rik van Riel
2001-04-22 20:58 ` James A. Sutherland
2001-04-22 21:26 ` Rik van Riel
2001-04-22 22:26 ` Jonathan Morton
2001-04-23 5:55 ` James A. Sutherland
2001-04-23 5:59 ` Rik van Riel
2001-04-21 20:29 ` Rik van Riel
2001-04-22 10:08 ` James A. Sutherland
-- strict thread matches above, loose matches on Subject: below --
2001-04-13 16:20 [PATCH] a simple OOM killer to save me from Netscape Rik van Riel
2001-04-16 12:17 ` suspend processes at load (was Re: a simple OOM ...) Szabolcs Szakacsits
2001-04-17 19:48 ` Rik van Riel
2001-04-18 21:32 ` Szabolcs Szakacsits
2001-04-18 20:38 ` James A. Sutherland
2001-04-18 23:25 ` Szabolcs Szakacsits
2001-04-18 22:29 ` Rik van Riel
2001-04-19 10:14 ` Stephen C. Tweedie
2001-04-19 13:23 ` Szabolcs Szakacsits
2001-04-19 2:11 ` Rik van Riel
2001-04-19 7:08 ` James A. Sutherland
2001-04-19 13:37 ` Szabolcs Szakacsits
2001-04-19 12:26 ` Christoph Rohland
2001-04-19 12:30 ` James A. Sutherland
2001-04-19 9:15 ` James A. Sutherland
2001-04-19 18:34 ` Dave McCracken
2001-04-19 18:47 ` James A. Sutherland
2001-04-19 18:53 ` Dave McCracken
2001-04-19 19:10 ` James A. Sutherland
2001-04-20 14:58 ` Rik van Riel
2001-04-21 6:10 ` James A. Sutherland
2001-04-19 19:13 ` Rik van Riel
2001-04-19 19:47 ` Gerrit Huizenga
2001-04-20 12:44 ` Szabolcs Szakacsits
2001-04-19 20:06 ` James A. Sutherland
2001-04-20 12:29 ` Szabolcs Szakacsits
2001-04-20 11:50 ` Jonathan Morton
2001-04-20 13:32 ` Szabolcs Szakacsits
2001-04-20 14:30 ` Rik van Riel
2001-04-22 10:21 ` James A. Sutherland
2001-04-20 12:25 ` Szabolcs Szakacsits
2001-04-21 6:08 ` James A. Sutherland
2001-04-20 12:18 ` Szabolcs Szakacsits
2001-04-22 10:19 ` James A. Sutherland
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='l03130300b704f22fc837@[192.168.239.105]' \
--to=chromi@cyberspace.org \
--cc=dmc@austin.ibm.com \
--cc=jas88@cam.ac.uk \
--cc=linux-mm@kvack.org \
/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