Skip to content
  • Glauber Costa's avatar
    memcg: kmem controller infrastructure · 7ae1e1d0
    Glauber Costa authored
    
    
    Introduce infrastructure for tracking kernel memory pages to a given
    memcg.  This will happen whenever the caller includes the flag
    __GFP_KMEMCG flag, and the task belong to a memcg other than the root.
    
    In memcontrol.h those functions are wrapped in inline acessors.  The idea
    is to later on, patch those with static branches, so we don't incur any
    overhead when no mem cgroups with limited kmem are being used.
    
    Users of this functionality shall interact with the memcg core code
    through the following functions:
    
    memcg_kmem_newpage_charge: will return true if the group can handle the
                               allocation. At this point, struct page is not
                               yet allocated.
    
    memcg_kmem_commit_charge: will either revert the charge, if struct page
                              allocation failed, or embed memcg information
                              into page_cgroup.
    
    memcg_kmem_uncharge_page: called at free time, will revert the charge.
    
    Signed-off-by: default avatarGlauber Costa <glommer@parallels.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.cz>
    Acked-by: default avatarKamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@cs.helsinki.fi>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Frederic Weisbecker <fweisbec@redhat.com>
    Cc: Greg Thelen <gthelen@google.com>
    Cc: JoonSoo Kim <js1304@gmail.com>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Suleiman Souhlal <suleiman@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    7ae1e1d0