From: Johannes Weiner <hannes@cmpxchg.org>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"nishimura@mxp.nes.nec.co.jp" <nishimura@mxp.nes.nec.co.jp>,
"balbir@linux.vnet.ibm.com" <balbir@linux.vnet.ibm.com>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>
Subject: [patch 2/3] memcg: prevent endless loop on huge page charge
Date: Thu, 27 Jan 2011 14:46:45 +0100 [thread overview]
Message-ID: <20110127134645.GA14309@cmpxchg.org> (raw)
In-Reply-To: <20110127103438.GC2401@cmpxchg.org>
The charging code can encounter a charge size that is bigger than a
regular page in two situations: one is a batched charge to fill the
per-cpu stocks, the other is a huge page charge.
This code is distributed over two functions, however, and only the
outer one is aware of huge pages. In case the charging fails, the
inner function will tell the outer function to retry if the charge
size is bigger than regular pages--assuming batched charging is the
only case. And the outer function will retry forever charging a huge
page.
This patch makes sure the inner function can distinguish between batch
charging and a single huge page charge. It will only signal another
attempt if batch charging failed, and go into regular reclaim when it
is called on behalf of a huge page.
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
---
mm/memcontrol.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 8fa4be3..17c4e36 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -1847,7 +1847,7 @@ static int __mem_cgroup_do_charge(struct mem_cgroup *mem, gfp_t gfp_mask,
} else
mem_over_limit = mem_cgroup_from_res_counter(fail_res, res);
- if (csize > PAGE_SIZE) /* change csize and retry */
+ if (csize == CHARGE_SIZE) /* retry without batching */
return CHARGE_RETRY;
if (!(gfp_mask & __GFP_WAIT))
--
1.7.3.5
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-01-27 13:46 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-21 6:34 [PATCH 0/7] memcg : more fixes and clean up for 2.6.28-rc KAMEZAWA Hiroyuki
2011-01-21 6:37 ` [PATCH 1/7] memcg : comment, style fixes for recent patch of move_parent KAMEZAWA Hiroyuki
2011-01-21 7:16 ` Daisuke Nishimura
2011-01-24 10:14 ` Johannes Weiner
2011-01-24 10:15 ` KAMEZAWA Hiroyuki
2011-01-24 10:45 ` Johannes Weiner
2011-01-24 11:14 ` Hiroyuki Kamezawa
2011-01-24 11:34 ` Johannes Weiner
2011-01-21 6:39 ` [PATCH 2/7] memcg : more fixes and clean up for 2.6.28-rc KAMEZAWA Hiroyuki
2011-01-21 7:17 ` Daisuke Nishimura
2011-01-24 10:14 ` Johannes Weiner
2011-01-21 6:41 ` [PATCH 3/7] memcg : fix mem_cgroup_check_under_limit KAMEZAWA Hiroyuki
2011-01-21 7:45 ` Daisuke Nishimura
2011-01-24 10:04 ` Johannes Weiner
2011-01-24 10:03 ` KAMEZAWA Hiroyuki
2011-01-21 6:44 ` [PATCH 4/7] memcg : fix charge function of THP allocation KAMEZAWA Hiroyuki
2011-01-21 8:48 ` Daisuke Nishimura
2011-01-24 0:14 ` KAMEZAWA Hiroyuki
2011-01-27 10:34 ` Johannes Weiner
2011-01-27 10:40 ` [patch] memcg: prevent endless loop with huge pages and near-limit group Johannes Weiner
2011-01-27 23:40 ` KAMEZAWA Hiroyuki
2011-01-27 13:46 ` Johannes Weiner [this message]
2011-01-27 14:00 ` [patch 2/3] memcg: prevent endless loop on huge page charge Gleb Natapov
2011-01-27 14:14 ` Johannes Weiner
2011-01-27 23:41 ` KAMEZAWA Hiroyuki
2011-01-27 13:47 ` [patch 3/3] memcg: never OOM when charging huge pages Johannes Weiner
2011-01-27 23:44 ` KAMEZAWA Hiroyuki
2011-01-27 23:45 ` Daisuke Nishimura
2011-01-27 23:49 ` KAMEZAWA Hiroyuki
2011-01-27 14:18 ` [PATCH 4/7] memcg : fix charge function of THP allocation Johannes Weiner
2011-01-27 23:38 ` KAMEZAWA Hiroyuki
2011-01-21 6:46 ` [PATCH 5/7] memcg : fix khugepaged scan of process under buzy memcg KAMEZAWA Hiroyuki
2011-01-21 6:49 ` [PATCH 6/7] memcg : use better variable name KAMEZAWA Hiroyuki
2011-01-21 6:50 ` [PATCH 7/7] memcg : remove ugly vairable initialization by callers KAMEZAWA Hiroyuki
2011-01-21 9:17 ` Daisuke Nishimura
2011-01-24 10:19 ` Johannes Weiner
2011-01-24 0:29 ` [PATCH 0/7] memcg : more fixes and clean up for 2.6.28-rc KAMEZAWA Hiroyuki
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=20110127134645.GA14309@cmpxchg.org \
--to=hannes@cmpxchg.org \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nishimura@mxp.nes.nec.co.jp \
/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