Linux: Report reclaimable memory to kernel as such (#16385)
commitd4b5517ef95948d22a26376768442a59116fa4e7
authorAlexander Motin <mav@FreeBSD.org>
Tue, 30 Jul 2024 18:40:47 +0000 (30 14:40 -0400)
committerGitHub <noreply@github.com>
Tue, 30 Jul 2024 18:40:47 +0000 (30 11:40 -0700)
treeaad84853287a0dc377d14c0f7e522a9198a7db96
parentd54d0fff392a8889e794a10c1e90746f4493cf30
Linux: Report reclaimable memory to kernel as such (#16385)

Linux provides SLAB_RECLAIM_ACCOUNT and __GFP_RECLAIMABLE flags to
mark memory allocations that can be freed via shinker calls.  It
should allow kernel to tune and group such allocations for lower
memory fragmentation and better reclamation under pressure.

This patch marks as reclaimable most of ARC memory, directly
evictable via ZFS shrinker, plus also dnode/znode/sa memory,
indirectly evictable via kernel's superblock shrinker.

Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Allan Jude <allan@klarasystems.com>
14 files changed:
include/os/freebsd/spl/sys/kmem.h
include/os/linux/spl/sys/kmem_cache.h
include/sys/zfs_context.h
module/os/freebsd/zfs/abd_os.c
module/os/freebsd/zfs/zfs_znode.c
module/os/linux/spl/spl-kmem-cache.c
module/os/linux/spl/spl-zlib.c
module/os/linux/zfs/abd_os.c
module/os/linux/zfs/zfs_znode.c
module/zfs/arc.c
module/zfs/dnode.c
module/zfs/lz4_zfs.c
module/zfs/sa.c
module/zfs/zio.c