From: Nick Piggin <npiggin@suse.de>
To: David Rientjes <rientjes@google.com>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
"Greg Kroah-Hartman" <gregkh@suse.de>,
"San Mehat" <san@android.com>,
"Arve Hjønnevåg" <arve@android.com>,
linux-kernel@vger.kernel.org
Subject: Re: [patch 1/7] lowmemorykiller: Only iterate over process list when needed.
Date: Tue, 5 May 2009 12:23:59 +0200 [thread overview]
Message-ID: <20090505102359.GD28917@wotan.suse.de> (raw)
In-Reply-To: <alpine.DEB.2.00.0905041722040.11756@chino.kir.corp.google.com>
On Mon, May 04, 2009 at 05:26:50PM -0700, David Rientjes wrote:
> From: Arve Hjønnevåg <arve@android.com>
>
> Use NR_ACTIVE plus NR_INACTIVE as a size estimate for our fake cache
> instead the sum of rss. Neither method is accurate.
>
> Also skip the process scan, if the amount of memory available is above
> the largest threshold set.
>
> Signed-off-by: Arve Hjønnevåg <arve@android.com>
Didn't really look at the android stuff because I didn't even know
it was there before. But I asume it is going to be "submitted" to
the kernel proper at some stage (by some means other than a git rename) :)
> ---
> drivers/staging/android/lowmemorykiller.c | 35 +++++++++++++++++-----------
> 1 files changed, 21 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/staging/android/lowmemorykiller.c b/drivers/staging/android/lowmemorykiller.c
> --- a/drivers/staging/android/lowmemorykiller.c
> +++ b/drivers/staging/android/lowmemorykiller.c
> @@ -71,23 +71,30 @@ static int lowmem_shrink(int nr_to_scan, gfp_t gfp_mask)
> }
> if(nr_to_scan > 0)
> lowmem_print(3, "lowmem_shrink %d, %x, ofree %d, ma %d\n", nr_to_scan, gfp_mask, other_free, min_adj);
> + rem = global_page_state(NR_ACTIVE) + global_page_state(NR_INACTIVE);
> + if (nr_to_scan <= 0 || min_adj == OOM_ADJUST_MAX + 1) {
> + lowmem_print(5, "lowmem_shrink %d, %x, return %d\n", nr_to_scan, gfp_mask, rem);
> + return rem;
> + }
> +
> read_lock(&tasklist_lock);
> for_each_process(p) {
> - if(p->oomkilladj >= 0 && p->mm) {
> - tasksize = get_mm_rss(p->mm);
> - if(nr_to_scan > 0 && tasksize > 0 && p->oomkilladj >= min_adj) {
> - if(selected == NULL ||
> - p->oomkilladj > selected->oomkilladj ||
> - (p->oomkilladj == selected->oomkilladj &&
> - tasksize > selected_tasksize)) {
> - selected = p;
> - selected_tasksize = tasksize;
> - lowmem_print(2, "select %d (%s), adj %d, size %d, to kill\n",
> - p->pid, p->comm, p->oomkilladj, tasksize);
> - }
> - }
> - rem += tasksize;
> + if (p->oomkilladj < min_adj || !p->mm)
> + continue;
> + tasksize = get_mm_rss(p->mm);
> + if (tasksize <= 0)
> + continue;
> + if (selected) {
> + if (p->oomkilladj < selected->oomkilladj)
> + continue;
> + if (p->oomkilladj == selected->oomkilladj &&
> + tasksize <= selected_tasksize)
> + continue;
> }
> + selected = p;
> + selected_tasksize = tasksize;
> + lowmem_print(2, "select %d (%s), adj %d, size %d, to kill\n",
> + p->pid, p->comm, p->oomkilladj, tasksize);
> }
> if(selected != NULL) {
> lowmem_print(1, "send sigkill to %d (%s), adj %d, size %d\n",
next prev parent reply other threads:[~2009-05-05 10:24 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-05 0:26 [patch 1/7] lowmemorykiller: Only iterate over process list when needed David Rientjes
2009-05-05 0:26 ` [patch 2/7] lowmemorykiller: Don't count free space unless it meets the specified limit by itself David Rientjes
2009-05-05 0:26 ` [patch 3/7] oom: cleanup android low memory killer David Rientjes
2009-05-05 0:26 ` [patch 4/7] oom: fix possible android low memory killer NULL pointer David Rientjes
2009-05-05 0:27 ` [patch 5/7] oom: fix possible oom_dump_tasks " David Rientjes
2009-05-05 10:11 ` Nick Piggin
2009-05-05 0:27 ` [patch 6/7] oom: move oom_adj value from task_struct to mm_struct David Rientjes
2009-05-05 10:18 ` Nick Piggin
2009-05-05 18:29 ` David Rientjes
2009-05-05 0:27 ` [patch 7/7] oom: prevent possible OOM_DISABLE livelock David Rientjes
2009-05-05 10:22 ` Nick Piggin
2009-05-05 18:33 ` David Rientjes
2009-05-05 10:23 ` Nick Piggin [this message]
2009-05-05 16:31 ` [patch 1/7] lowmemorykiller: Only iterate over process list when needed Greg KH
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=20090505102359.GD28917@wotan.suse.de \
--to=npiggin@suse.de \
--cc=akpm@linux-foundation.org \
--cc=arve@android.com \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=rientjes@google.com \
--cc=san@android.com \
/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