• KAMEZAWA Hiroyuki's avatar
    It's reported that OOM-Killer kills Gnone/KDE first. And yes, we can · b9531803
    KAMEZAWA Hiroyuki authored
    reproduce it easily.
    
    Now, oom-killer uses mm->total_vm as its base value.  But in recent
    applications, there are a big gap between VM size and RSS size.  Because
    
      - Applications attaches much dynamic libraries. (Gnome, KDE, etc...)
      - Applications may alloc big VM area but use small part of them.
        (Java, and multi-threaded applications has this tendency because
         of default-size of stack.)
    
    I think using mm->total_vm as score for oom-kill is not good.  By the same
    reason, overcommit memory can't work as expected.  (In other words, if we
    depends on total_vm, using overcommit more positive is a good choice.)
    
    This patch uses mm->anon_rss/file_rss as base value for calculating badness.
    
    Following is changes to OOM score(badness) on an environment with 1.6G memory
    plus memory-eater(500M & 1G).
    
    Top 10 of badness score. (The highest one is the first candidate to be killed)
    Before
    badness program
    91228	gnome-settings-
    94210	clock-applet
    103202	mixer_applet2
    106563	tomboy
    112947	gnome-terminal
    128944	mmap              <----------- 500M malloc
    129332	nautilus
    215476	bash              <----------- parent of 2 mallocs.
    256944	mmap              <----------- 1G malloc
    423586	gnome-session
    
    After
    badness
    1911	mixer_applet2
    1955	clock-applet
    1986	xinit
    1989	gnome-session
    2293	nautilus
    2955	gnome-terminal
    4113	tomboy
    104163	mmap             <----------- 500M malloc.
    168577	bash             <----------- parent of 2 mallocs
    232375	mmap             <----------- 1G malloc
    
    seems good for me.  Maybe we can tweak this patch more, but this one will
    be a good one as a start point.
    Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Reviewed-by: default avatarMinchan Kim <minchan.kim@gmail.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    b9531803
oom_kill.c 16.7 KB