Skip to content
  • Michal Hocko's avatar
    oom: improve oom disable handling · d75da004
    Michal Hocko authored
    Tetsuo has reported that sysrq triggered OOM killer will print a
    misleading information when no tasks are selected:
    
      sysrq: SysRq : Manual OOM execution
      Out of memory: Kill process 4468 ((agetty)) score 0 or sacrifice child
      Killed process 4468 ((agetty)) total-vm:43704kB, anon-rss:1760kB, file-rss:0kB, shmem-rss:0kB
      sysrq: SysRq : Manual OOM execution
      Out of memory: Kill process 4469 (systemd-cgroups) score 0 or sacrifice child
      Killed process 4469 (systemd-cgroups) total-vm:10704kB, anon-rss:120kB, file-rss:0kB, shmem-rss:0kB
      sysrq: SysRq : Manual OOM execution
      sysrq: OOM request ignored because killer is disabled
      sysrq: SysRq : Manual OOM execution
      sysrq: OOM request ignored because killer is disabled
      sysrq: SysRq : Manual OOM execution
      sysrq: OOM request ignored because killer is disabled
    
    The real reason is that there are no eligible tasks for the OOM killer
    to select but since commit 7c5f64f8 ("mm: oom: deduplicate victim
    selection code for memcg and global oom") the semantic of out_of_memory
    has changed without updating moom_callback.
    
    This patch updates moom_callback to tell that no task was eligible which
    is the case for both oom killer disabled and no eligible tasks.  In
    order to help distinguish first case from the second add printk to both
    oom_killer_{enable,disable}.  This information is useful on its own
    because it might help debugging potential memory allocation failures.
    
    Fixes: 7c5f64f8 ("mm: oom: deduplicate victim selection code for memcg and global oom")
    Link: http://lkml.kernel.org/r/20170404134705.6361-1-mhocko@kernel.org
    
    
    Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
    Reported-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    d75da004