1. 21 Aug, 2023 1 commit
    • Yosry Ahmed's avatar
      mm: zswap: multiple zpools support · b8cf32dc
      Yosry Ahmed authored
      Support using multiple zpools of the same type in zswap, for concurrency
      purposes.  A fixed number of 32 zpools is suggested by this commit, which
      was determined empirically.  It can be later changed or made into a config
      option if needed.
      
      On a setup with zswap and zsmalloc, comparing a single zpool to 32 zpools
      shows improvements in the zsmalloc lock contention, especially on the swap
      out path.
      
      The following shows the perf analysis of the swapout path when 10
      workloads are simultaneously reclaiming and refaulting tmpfs pages.  There
      are some improvements on the swap in path as well, but less significant.
      
      1 zpool:
      
       |--28.99%--zswap_frontswap_store
             |
             <snip>
             |
             |--8.98%--zpool_map_handle
             |     |
             |      --8.98%--zs_zpool_map
             |           |
             |            --8.95%--zs_map_object
             |                 |
             |                  --8.38%--_raw_spin_lock
             |                       |
             |                        --7.39%--queued_spin_lock_slowpath
             |
             |--8.82%--zpool_malloc
             |     |
             |      --8.82%--zs_zpool_malloc
             |           |
             |            --8.80%--zs_malloc
             |                 |
             |                 |--7.21%--_raw_spin_lock
             |                 |     |
             |                 |      --6.81%--queued_spin_lock_slowpath
             <snip>
      
      32 zpools:
      
       |--16.73%--zswap_frontswap_store
             |
             <snip>
             |
             |--1.81%--zpool_malloc
             |     |
             |      --1.81%--zs_zpool_malloc
             |           |
             |            --1.79%--zs_malloc
             |                 |
             |                  --0.73%--obj_malloc
             |
             |--1.06%--zswap_update_total_size
             |
             |--0.59%--zpool_map_handle
             |     |
             |      --0.59%--zs_zpool_map
             |           |
             |            --0.57%--zs_map_object
             |                 |
             |                  --0.51%--_raw_spin_lock
             <snip>
      
      Link: https://lkml.kernel.org/r/20230620194644.3142384-1-yosryahmed@google.comSigned-off-by: default avatarYosry Ahmed <yosryahmed@google.com>
      Suggested-by: default avatarYu Zhao <yuzhao@google.com>
      Acked-by: default avatarChris Li (Google) <chrisl@kernel.org>
      Reviewed-by: default avatarNhat Pham <nphamcs@gmail.com>
      Tested-by: default avatarNhat Pham <nphamcs@gmail.com>
      Cc: Dan Streetman <ddstreet@ieee.org>
      Cc: Domenico Cerasuolo <cerasuolodomenico@gmail.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Seth Jennings <sjenning@redhat.com>
      Cc: Vitaly Wool <vitaly.wool@konsulko.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      b8cf32dc
  2. 18 Aug, 2023 39 commits