• Roman Gushchin's avatar
    mm: shrinkers: introduce debugfs interface for memory shrinkers · 5035ebc6
    Roman Gushchin authored
    This commit introduces the /sys/kernel/debug/shrinker debugfs interface
    which provides an ability to observe the state of individual kernel memory
    shrinkers.
    
    Because the feature adds some memory overhead (which shouldn't be large
    unless there is a huge amount of registered shrinkers), it's guarded by a
    config option (enabled by default).
    
    This commit introduces the "count" interface for each shrinker registered
    in the system.
    
    The output is in the following format:
    <cgroup inode id> <nr of objects on node 0> <nr of objects on node 1>...
    <cgroup inode id> <nr of objects on node 0> <nr of objects on node 1>...
    ...
    
    To reduce the size of output on machines with many thousands cgroups, if
    the total number of objects on all nodes is 0, the line is omitted.
    
    If the shrinker is not memcg-aware or CONFIG_MEMCG is off, 0 is printed as
    cgroup inode id.  If the shrinker is not numa-aware, 0's are printed for
    all nodes except the first one.
    
    This commit gives debugfs entries simple numeric names, which are not very
    convenient.  The following commit in the series will provide shrinkers
    with more meaningful names.
    
    [akpm@linux-foundation.org: remove WARN_ON_ONCE(), per Roman]
      Reported-by: syzbot+300d27c79fe6d4cbcc39@syzkaller.appspotmail.com
    Link: https://lkml.kernel.org/r/20220601032227.4076670-3-roman.gushchin@linux.devSigned-off-by: default avatarRoman Gushchin <roman.gushchin@linux.dev>
    Reviewed-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
    Acked-by: default avatarMuchun Song <songmuchun@bytedance.com>
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: Dave Chinner <dchinner@redhat.com>
    Cc: Hillf Danton <hdanton@sina.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    5035ebc6
Kconfig.debug 87.6 KB