• KAMEZAWA Hiroyuki's avatar
    memcg: fix vmscan count in small memcgs · 4508378b
    KAMEZAWA Hiroyuki authored
    Commit 246e87a9 ("memcg: fix get_scan_count() for small targets")
    fixes the memcg/kswapd behavior against small targets and prevent vmscan
    priority too high.
    
    But the implementation is too naive and adds another problem to small
    memcg.  It always force scan to 32 pages of file/anon and doesn't handle
    swappiness and other rotate_info.  It makes vmscan to scan anon LRU
    regardless of swappiness and make reclaim bad.  This patch fixes it by
    adjusting scanning count with regard to swappiness at el.
    
    At a test "cat 1G file under 300M limit." (swappiness=20)
     before patch
            scanned_pages_by_limit 360919
            scanned_anon_pages_by_limit 180469
            scanned_file_pages_by_limit 180450
            rotated_pages_by_limit 31
            rotated_anon_pages_by_limit 25
            rotated_file_pages_by_limit 6
            freed_pages_by_limit 180458
            freed_anon_pages_by_limit 19
            freed_file_pages_by_limit 180439
            elapsed_ns_by_limit 429758872
     after patch
            scanned_pages_by_limit 180674
            scanned_anon_pages_by_limit 24
            scanned_file_pages_by_limit 180650
            rotated_pages_by_limit 35
            rotated_anon_pages_by_limit 24
            rotated_file_pages_by_limit 11
            freed_pages_by_limit 180634
            freed_anon_pages_by_limit 0
            freed_file_pages_by_limit 180634
            elapsed_ns_by_limit 367119089
            scanned_pages_by_system 0
    
    the numbers of scanning anon are decreased(as expected), and elapsed time
    reduced. By this patch, small memcgs will work better.
    (*) Because the amount of file-cache is much bigger than anon,
        recalaim_stat's rotate-scan counter make scanning files more.
    Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Ying Han <yinghan@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    4508378b
vmscan.c 97 KB