From: John Sigler <linux.kernel@free.fr>
To: Helge Hafting <helge.hafting@aitel.hist.no>
Cc: Andrea Arcangeli <andrea@suse.de>, linux-kernel@vger.kernel.org
Subject: Re: Runaway process and oom-killer
Date: Thu, 14 Jun 2007 11:43:10 +0200 [thread overview]
Message-ID: <46710DAE.7020604@free.fr> (raw)
In-Reply-To: <466FF154.7030905@aitel.hist.no>
Helge Hafting wrote:
> John Sigler wrote:
>
>> Andrea Arcangeli wrote:
>>
>>> On Wed, Jun 13, 2007 at 10:49:29AM +0200, John Sigler wrote:
>>>
>>>> Question 2: how can I tell which process or kernel thread was
>>>> hogging most of the RAM when the oom-killer kicked in?
>>>
>>> Theoretically the one that was killed first but not for sure in
>>> current mainline hence see below.
>>
>> If I read the logs correctly, oom-killer is "invoked" three times
>> before it effectively kills a process. Then oom-killer kills myapp,
>> syslogd, and boa, in that order. Why didn't oom-killer kill anything
>> the first three times?
>
> My guess:
> Something needs memory but finds there is none to be had
> oom-killer is invoked and targets myapp.
> myapp takes some time to die. Particularly, the memory it uses
> isn't freed up instantly. In the meantime something else
> needs memory and find none. (Another packet received?)
Possibly. In fact, myapp receives a 40 Mbit/s stream.
> The oom-killer is invoked again, this time it targets syslogd.
I went hunting, and found a memory leak in our syslogd. Doh!
> And so on. The kernel do many things in parallel, running out
> of memory in a multitasking system therefore is a complicated business.
> Especially when process killing takes some time.
I didn't mention that there is no swap on this system.
> Note that you can turn off memory overcommit, your leaky app
> should then get a memory allocation error instead of
> triggering the oom-killer.
Are you referring to these /proc/sys/vm entries?
# cat /proc/sys/vm/overcommit_memory
0
# cat /proc/sys/vm/overcommit_ratio
50
Are you suggesting I set overcommit_memory to 2?
The manual states:
/proc/sys/vm/overcommit_memory
This file contains the kernel virtual memory accounting mode.
Values are:
0: heuristic overcommit (this is the default)
1: always overcommit, never check
2: always check, never overcommit
In mode 0, calls of mmap(2) with MAP_NORESERVE set are not checked, and
the default check is very weak, leading to the risk of getting a process
"OOM-killed". Under Linux 2.4 any non-zero value implies mode 1. In mode
2 (available since Linux 2.6), the total virtual address space on the
system is limited to (SS + RAM*(r/100)), where SS is the size of the
swap space, and RAM is the size of the physical memory, and r is the
contents of the file /proc/sys/vm/overcommit_ratio.
In my case, SS=0 and RAM=256MB.
If I understand correctly, if I set ratio to 50, then processes can only
address 128MB. I'd be, in effect, reserving 128MB for the kernel, right?
Are there other entries in /proc/sys/vm I should be playing with? :-)
/proc/sys/vm/block_dump
0
/proc/sys/vm/dirty_background_ratio
10
/proc/sys/vm/dirty_expire_centisecs
3000
/proc/sys/vm/dirty_ratio
40
/proc/sys/vm/dirty_writeback_centisecs
500
/proc/sys/vm/drop_caches
0
/proc/sys/vm/laptop_mode
0
/proc/sys/vm/legacy_va_layout
0
/proc/sys/vm/lowmem_reserve_ratio
256
/proc/sys/vm/max_map_count
65536
/proc/sys/vm/min_free_kbytes
2039
/proc/sys/vm/nr_pdflush_threads
2
/proc/sys/vm/overcommit_memory
0
/proc/sys/vm/overcommit_ratio
50
/proc/sys/vm/page-cluster
3
/proc/sys/vm/panic_on_oom
0
/proc/sys/vm/percpu_pagelist_fraction
0
/proc/sys/vm/swappiness
60
/proc/sys/vm/vdso_enabled
1
/proc/sys/vm/vfs_cache_pressure
100
Regards.
next prev parent reply other threads:[~2007-06-14 9:43 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-13 8:49 Runaway process and oom-killer John Sigler
2007-06-13 9:08 ` Andrea Arcangeli
2007-06-13 9:20 ` John Sigler
2007-06-13 13:29 ` Helge Hafting
2007-06-13 15:10 ` Chris Friesen
2007-06-13 15:26 ` Andrea Arcangeli
2007-06-14 10:01 ` John Sigler
2007-06-14 9:43 ` John Sigler [this message]
2007-06-14 12:56 ` Helge Hafting
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=46710DAE.7020604@free.fr \
--to=linux.kernel@free.fr \
--cc=andrea@suse.de \
--cc=helge.hafting@aitel.hist.no \
--cc=linux-kernel@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.