Re: Overcommitable memory??

From: Jesse Pollard (pollard@cats-chateau.net)
Date: Fri Mar 17 2000 - 23:24:38 EST


On Fri, 17 Mar 2000, James Sutherland wrote:
>On Fri, 17 Mar 2000, Andreas Bombe wrote:
>
>> On Thu, Mar 16, 2000 at 11:04:23AM +0000, James Sutherland wrote:
>> > On 15 Mar 2000, Rask Ingemann Lambertsen wrote:
>> > > Not at all. COW is a performance optimisation which does not depend on
>> > > overcommitment of memory in any way. Why would you want to turn it off?
>> >
>> > Because it *IS* overcommitment of memory. You can have two processes, each
>> > with their 200Mb of data, in a machine with 256Mb RAM+swap, quite happily
>> > - until they start writing to it, at which point you discover you have
>> > overcommitted your memory, and things go wrong.
>>
>> He means avoiding overcommit by counting vm requirements but without
>> actually copying COW pages (denying a COW allocation if it could not
>> be faulted in at a later time). Resulting in vast areas of unused
>> RAM.
>
>Yes, I know. This does avoid the performance hit - but it still wastes
>obscene amounts of swap space unnecessarily, and makes the original
>problem worse by reducing the available amount of memory.
>
>On a WWW server with 100 Apache processes of 20Mb, for example, I would
>need 30Mb or so normally - or 2Gb with this strategy, even though 1.97Gb
>of this is never used. This means I will run out of memory a LOT sooner -
>I have 1.97Gb less VM than I otherwise would! This certainly doesn't help
>the original problem...

Shoudn't need that much -- the text should be shareable and only counted
once. The data space is going to change anyway. Each slave server will
handle different requests, giving each different data space. It will have
to exist anyway. Under any form of resource allocation it should be given
30-40MB.

If I remember how Apache works correctly - it will recover when a child
process exceeds some quota. The child will terminate and the parent
will be notified. If necessary (under load) the parent will respawn
a new slave server.

In the current situation, any process may be terminated - even the parent.
When that process dies, all of the slave servers die.

Which is worse: A properly terminated process that is exceeding a resource
limit, or a random abort that may crash the system?
-------------------------------------------------------------------------
Jesse I Pollard, II
Email: pollard@cats-chateau.net

Any opinions expressed are solely my own.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Mar 23 2000 - 21:00:24 EST