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