Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754409Ab0BAAFM (ORCPT ); Sun, 31 Jan 2010 19:05:12 -0500 Received: from fgwmail6.fujitsu.co.jp ([192.51.44.36]:58939 "EHLO fgwmail6.fujitsu.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753942Ab0BAAFK (ORCPT ); Sun, 31 Jan 2010 19:05:10 -0500 X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Date: Mon, 1 Feb 2010 09:01:40 +0900 From: KAMEZAWA Hiroyuki To: David Rientjes Cc: Alan Cox , vedran.furac@gmail.com, Andrew Morton , "linux-mm@kvack.org" , minchan.kim@gmail.com, "linux-kernel@vger.kernel.org" , "balbir@linux.vnet.ibm.com" Subject: Re: [PATCH v3] oom-kill: add lowmem usage aware oom kill handling Message-Id: <20100201090140.116cc704.kamezawa.hiroyu@jp.fujitsu.com> In-Reply-To: References: <20100129162137.79b2a6d4@lxorguk.ukuu.org.uk> <20100129163030.1109ce78@lxorguk.ukuu.org.uk> <5a0e6098f900aa36993b2b7f2320f927.squirrel@webmail-b.css.fujitsu.com> Organization: FUJITSU Co. LTD. X-Mailer: Sylpheed 2.7.1 (GTK+ 2.10.14; i686-pc-mingw32) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1833 Lines: 54 On Fri, 29 Jan 2010 13:07:01 -0800 (PST) David Rientjes wrote: > On Sat, 30 Jan 2010, KAMEZAWA Hiroyuki wrote: > > > okay...I guess the cause of the problem Vedran met came from > > this calculation. > > == > > 109 /* > > 110 * Processes which fork a lot of child processes are likely > > 111 * a good choice. We add half the vmsize of the children if they > > 112 * have an own mm. This prevents forking servers to flood the > > 113 * machine with an endless amount of children. In case a single > > 114 * child is eating the vast majority of memory, adding only half > > 115 * to the parents will make the child our kill candidate of > > choice. > > 116 */ > > 117 list_for_each_entry(child, &p->children, sibling) { > > 118 task_lock(child); > > 119 if (child->mm != mm && child->mm) > > 120 points += child->mm->total_vm/2 + 1; > > 121 task_unlock(child); > > 122 } > > 123 > > == > > This makes task launcher(the fist child of some daemon.) first victim. > > That "victim", p, is passed to oom_kill_process() which does this: > > /* Try to kill a child first */ > list_for_each_entry(c, &p->children, sibling) { > if (c->mm == p->mm) > continue; > if (!oom_kill_task(c)) > return 0; > } > return oom_kill_task(p); > Then, finally, per-process oom_adj(!=OOM_DISABLE) control is ignored ? Seems broken. I think all this children-parent logic is bad. Thanks, -Kame -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/