• Michal Hocko's avatar
    memcg: change memcg_oom_mutex to spinlock · 1af8efe9
    Michal Hocko authored
    memcg_oom_mutex is used to protect memcg OOM path and eventfd interface
    for oom_control.  None of the critical sections which it protects sleep
    (eventfd_signal works from atomic context and the rest are simple linked
    list resp.  oom_lock atomic operations).
    
    Mutex is also too heavyweight for those code paths because it triggers a
    lot of scheduling.  It also makes makes convoying effects more visible
    when we have a big number of oom killing because we take the lock
    mutliple times during mem_cgroup_handle_oom so we have multiple places
    where many processes can sleep.
    Signed-off-by: default avatarMichal Hocko <mhocko@suse.cz>
    Cc: Balbir Singh <bsingharora@gmail.com>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    1af8efe9
memcontrol.c 143 KB