• K
    cgroups: use css id in swap cgroup for saving memory v5 · a3b2d692
    KAMEZAWA Hiroyuki 提交于
    Try to use CSS ID for records in swap_cgroup.  By this, on 64bit machine,
    size of swap_cgroup goes down to 2 bytes from 8bytes.
    
    This means, when 2GB of swap is equipped, (assume the page size is 4096bytes)
    
    	From size of swap_cgroup = 2G/4k * 8 = 4Mbytes.
    	To   size of swap_cgroup = 2G/4k * 2 = 1Mbytes.
    
    Reduction is large.  Of course, there are trade-offs.  This CSS ID will
    add overhead to swap-in/swap-out/swap-free.
    
    But in general,
      - swap is a resource which the user tend to avoid use.
      - If swap is never used, swap_cgroup area is not used.
      - Reading traditional manuals, size of swap should be proportional to
        size of memory. Memory size of machine is increasing now.
    
    I think reducing size of swap_cgroup makes sense.
    
    Note:
      - ID->CSS lookup routine has no locks, it's under RCU-Read-Side.
      - memcg can be obsolete at rmdir() but not freed while refcnt from
        swap_cgroup is available.
    
    Changelog v4->v5:
     - reworked on to memcg-charge-swapcache-to-proper-memcg.patch
    Changlog ->v4:
     - fixed not configured case.
     - deleted unnecessary comments.
     - fixed NULL pointer bug.
     - fixed message in dmesg.
    
    [nishimura@mxp.nes.nec.co.jp: css_tryget can be called twice in !PageCgroupUsed case]
    Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Li Zefan <lizf@cn.fujitsu.com>
    Cc: Balbir Singh <balbir@in.ibm.com>
    Cc: Paul Menage <menage@google.com>
    Cc: Hugh Dickins <hugh@veritas.com>
    Signed-off-by: NDaisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    a3b2d692
memcontrol.c 61.7 KB