linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH] memcg: oom: fix totalpages calculation for swappiness==0
@ 2012-10-10 14:11 Michal Hocko
  2012-10-10 20:50 ` David Rientjes
  2012-10-15  9:11 ` [RFC PATCH] memcg: oom: fix totalpages calculation for swappiness==0 Kamezawa Hiroyuki
  0 siblings, 2 replies; 22+ messages in thread
From: Michal Hocko @ 2012-10-10 14:11 UTC (permalink / raw)
  To: linux-mm
  Cc: David Rientjes, KOSAKI Motohiro, KAMEZAWA Hiroyuki,
	Johannes Weiner, LKML

Hi,
I am sending the patch below as an RFC because I am not entirely happy
about myself and maybe somebody can come up with a different approach
which would be less hackish.
As a background, I have noticed that memcg OOM killer kills a wrong
tasks while playing with memory.swappiness==0 in a small group (e.g.
50M). I have multiple anon mem eaters which fault in more than the hard
limit. OOM killer kills the last executed task:

# mem_eater spawns one process per parameter, mmaps the given size and
# faults memory in in parallel (all of them are synced to start together)
./mem_eater anon:50M anon:20M anon:20M anon:20M
10571: anon_eater for 20971520B
10570: anon_eater for 52428800B
10573: anon_eater for 20971520B
10572: anon_eater for 20971520B
10573: done with status 9
10571: done with status 0
10572: done with status 9
10570: done with status 9

[ pid ]   uid  tgid total_vm      rss nr_ptes swapents oom_score_adj name
[ 5706]     0  5706     4955      556      13        0             0 bash
[10569]     0 10569     1015      134       6        0             0 mem_eater
[10570]     0 10570    13815     4118      15        0             0 mem_eater
[10571]     0 10571     6135     5140      16        0             0 mem_eater
[10572]     0 10572     6135       22       7        0             0 mem_eater
[10573]     0 10573     6135     3541      14        0             0 mem_eater
Memory cgroup out of memory: Kill process 10573 (mem_eater) score 0 or sacrifice child
Killed process 10573 (mem_eater) total-vm:24540kB, anon-rss:14028kB, file-rss:136kB
[...]
[ pid ]   uid  tgid total_vm      rss nr_ptes swapents oom_score_adj name
[ 5706]     0  5706     4955      556      13        0             0 bash
[10569]     0 10569     1015      134       6        0             0 mem_eater
[10570]     0 10570    13815    10267      27        0             0 mem_eater
[10572]     0 10572     6135     2519      12        0             0 mem_eater
Memory cgroup out of memory: Kill process 10572 (mem_eater) score 0 or sacrifice child
Killed process 10572 (mem_eater) total-vm:24540kB, anon-rss:9940kB, file-rss:136kB
[...]
[ pid ]   uid  tgid total_vm      rss nr_ptes swapents oom_score_adj name
[ 5706]     0  5706     4955      556      13        0             0 bash
[10569]     0 10569     1015      134       6        0             0 mem_eater
[10570]     0 10570    13815    12773      31        0             0 mem_eater
Memory cgroup out of memory: Kill process 10570 (mem_eater) score 2 or sacrifice child
Killed process 10570 (mem_eater) total-vm:55260kB, anon-rss:50956kB, file-rss:136kB

As you can see 50M (pid:10570) is killed as the last one while 20M ones
are killed first. See the patch for more details about the problem.
As I state in the changelog the very same issue is present in the global
oom killer as well but it is much less probable as the amount of swap is
usualy much smaller than the available RAM and I think it is not worth
considering.

---

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2012-11-08  8:36 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-10 14:11 [RFC PATCH] memcg: oom: fix totalpages calculation for swappiness==0 Michal Hocko
2012-10-10 20:50 ` David Rientjes
2012-10-11  8:50   ` Michal Hocko
2012-10-11  8:57     ` [PATCH] memcg: oom: fix totalpages calculation for memory.swappiness==0 Michal Hocko
2012-10-11  9:13       ` Michal Hocko
2012-10-11 12:20       ` Johannes Weiner
2012-10-12 13:01         ` Michal Hocko
2012-10-11 22:36       ` KOSAKI Motohiro
2012-10-12 13:01         ` Michal Hocko
2012-10-15 22:04       ` [PATCH v2] " Michal Hocko
2012-10-15 22:07         ` [PATCH] doc: describe memcg swappiness more precisely memory.swappiness==0 Michal Hocko
2012-10-16  0:51           ` Kamezawa Hiroyuki
2012-10-16  0:54           ` David Rientjes
2012-11-07 22:10         ` [PATCH v2] memcg: oom: fix totalpages calculation for memory.swappiness==0 Andrew Morton
2012-11-07 22:46           ` Michal Hocko
2012-11-07 22:53             ` Andrew Morton
2012-11-08  8:35               ` Michal Hocko
2012-10-15  9:11 ` [RFC PATCH] memcg: oom: fix totalpages calculation for swappiness==0 Kamezawa Hiroyuki
2012-10-15  9:49   ` Michal Hocko
2012-10-15 14:25     ` KOSAKI Motohiro
2012-10-15 14:47       ` Michal Hocko
2012-10-15 22:33         ` KOSAKI Motohiro

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).