On Mon, Jun 24, 2024 at 9:40 PM Chengming Zhou <chengming.zhou@xxxxxxxxx> wrote: > > Zswap uses 32 pools to workaround the locking scalability problem in > zswap backends (mainly zsmalloc nowadays), which brings its own problems > like memory waste and more memory fragmentation. > > Testing results show that we can have near performance with only one > pool in zswap after changing zsmalloc to use per-size_class lock instead > of pool spinlock. > > Testing kernel build (make bzImage -j32) on tmpfs with memory.max=1GB, > and zswap shrinker enabled with 10GB swapfile on ext4. > > real user sys > 6.10.0-rc3 138.18 1241.38 1452.73 > 6.10.0-rc3-onepool 149.45 1240.45 1844.69 > 6.10.0-rc3-onepool-perclass 138.23 1242.37 1469.71 > > And do the same testing using zbud, which shows a little worse performance > as expected since we don't do any locking optimization for zbud. I think > it's acceptable since zsmalloc became a lot more popular than other > backends, and we may want to support only zsmalloc in the future. > > real user sys > 6.10.0-rc3-zbud 138.23 1239.58 1430.09 > 6.10.0-rc3-onepool-zbud 139.64 1241.37 1516.59 > > Reviewed-by: Nhat Pham <nphamcs@xxxxxxxxx> > Signed-off-by: Chengming Zhou <chengming.zhou@xxxxxxxxx> Acked-by: Yosry Ahmed <yosryahmed@xxxxxxxxxx>