Skip to content
  • Minchan Kim's avatar
    mm/zswap: support multiple swap devices · 60105e12
    Minchan Kim authored
    
    
    Cai Liu reporeted that now zbud pool pages counting has a problem when
    multiple swap is used because it just counts only one swap intead of all
    of swap so zswap cannot control writeback properly.  The result is
    unnecessary writeback or no writeback when we should really writeback.
    
    IOW, it made zswap crazy.
    
    Another problem in zswap is:
    
    For example, let's assume we use two swap A and B with different
    priority and A already has charged 19% long time ago and let's assume
    that A swap is full now so VM start to use B so that B has charged 1%
    recently.  It menas zswap charged (19% + 1%) is full by default.  Then,
    if VM want to swap out more pages into B, zbud_reclaim_page would be
    evict one of pages in B's pool and it would be repeated continuously.
    It's totally LRU reverse problem and swap thrashing in B would happen.
    
    This patch makes zswap consider mutliple swap by creating *a* zbud pool
    which will be shared by multiple swap so all of zswap pages in multiple
    swap keep order by LRU so it can prevent above two problems.
    
    Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
    Reported-by: default avatarCai Liu <cai.liu@samsung.com>
    Suggested-by: default avatarWeijie Yang <weijie.yang.kh@gmail.com>
    Cc: Seth Jennings <sjennings@variantweb.net>
    Reviewed-by: default avatarBob Liu <bob.liu@oracle.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    60105e12