Public bug reported:

Since Linux 7.0, vmalloc first tries high-order pages with
__GFP_KSWAPD_RECLAIM set. SPL's async slab growth (spl_cache_grow_work
-> kv_alloc -> __vmalloc) hits this on every grow, so kswapd runs even
with tens of GiB free. Upstream issue:
https://github.com/openzfs/zfs/issues/18893

Impact on our NFS server (60 GiB RAM, 306 TB pool):
- ARC collapsed from 25 GiB to 2.9 GiB with ~47 GiB MemAvailable.
- nfsd's dynamic session-slot shrinker runs on each kswapd pass, so busy NFS 
clients sit at 1 slot for hours (all their I/O serialized).
- 76 kswapd wakeups/min from spl_cache_grow_work (orders 7-8) while 878 free 
order-10 blocks existed.

Workarounds (`spl_kmem_cache_obj_per_slab=1`,
`vm.watermark_boost_factor=0`) reduce it but do not remove it.

Versions: Ubuntu 24.04.4, linux-image-7.0.0-38-generic
7.0.0-38.38~24.04.4, zfs kmod 2.4.1-1ubuntu5.1, zfsutils-linux
2.2.2-0ubuntu9.5

** Affects: zfs-linux (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2172011

Title:
  SPL vmalloc slab growth wakes kswapd on 7.0 kernels (openzfs#19276)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/2172011/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to