Re: running of out memory => kernel crash

From: Denys Vlasenko
Date: Thu Aug 18 2011 - 08:45:21 EST


On Thu, Aug 18, 2011 at 4:18 AM, Pavel Ivanov <paivanof@xxxxxxxxx> wrote:
>>> Why "killing" does not appear here? Why it try to "find some
>>> recently used page"?
>>
>> Because killing is the last resort. As long as kernel can free
>> a page by dropping an unmodified file-backed page, it will do that.
>> When there is nothing more to drop, and still more free pages
>> are needed, _then_ kernel will start oom killing.
>
> I have a little concern about this explanation of yours. Suppose we
> have some amount of more or less actively executing processes in the
> system. Suppose they started to use lots of resident memory. Amount of
> memory they use is less than total available physical memory but when
> we add total size of code for those processes it would be several
> pages more than total size of physical memory. As I understood from
> your explanation in such situation one process will execute its time
> slice, kernel will switch to other one, find that its code was pushed
> out of RAM, read it from disk, execute its time slice, switch to next
> process, read its code from disk, execute and so on. So system will be
> virtually unusable because of constantly reading from disk just to
> execute next small piece of code. But oom will never be firing in such
> situation. Is my understanding correct?

Yes.

> Shouldn't it be considered as an unwanted behavior?

Yes. But all alternatives (such as killing some process) seem to be worse.

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