mirror_zfs/module/os/linux/zfs
Alexander Motin 55427add3c
Several improvements to ARC shrinking (#16197)
- When receiving memory pressure signal from OS be more strict
trying to free some memory.  Otherwise kernel may come again and
request much more.  Return as result how much arc_c was actually
reduced due to this request, that may be less than requested.
 - On Linux when receiving direct reclaim from some file system
(that may be ZFS) instead of ignoring request completely, just
shrink the ARC, but do not wait for eviction.  Waiting there may
cause deadlock.  Ignoring it as before may put extra pressure on
other caches and/or swap, and cause OOM if nothing help.  While
not waiting may result in more ARC evicted later, and may be too
late if OOM killer activate right now, but I hope it to be better
than doing nothing at all.
 - On Linux set arc_no_grow before waiting for reclaim, not after,
or it may grow back while we are waiting.
 - On Linux add new parameter zfs_arc_shrinker_seeks to balance
ARC eviction cost, relative to page cache and other subsystems.
 - Slightly update Linux arc_set_sys_free() math for new kernels.

Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
Reviewed-by: Rob Norris <rob.norris@klarasystems.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
2024-07-25 10:31:14 -07:00
..
abd_os.c Use kmap_local_page instead of kmap_atomic (#16329) 2024-07-16 17:27:29 -07:00
arc_os.c Several improvements to ARC shrinking (#16197) 2024-07-25 10:31:14 -07:00
mmp_os.c Cleanup: 64-bit kernel module parameters should use fixed width types 2022-10-13 10:03:29 -07:00
policy.c Linux 6.3 compat: idmapped mount API changes 2023-04-10 14:15:36 -07:00
qat_compress.c Intel QAT 1.7 compatibility 2023-09-07 14:38:17 -07:00
qat_crypt.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
qat.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
spa_misc_os.c Selectable block allocators 2023-09-01 18:00:30 -07:00
trace.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
vdev_disk.c Linux 5.16: use bdev_nr_bytes() to get device capacity 2024-07-15 17:10:06 -07:00
vdev_file.c zio: rename ZIO_TYPE_IOCTL to ZIO_TYPE_FLUSH 2024-04-11 17:17:23 -07:00
vdev_label_os.c RAID-Z expansion feature 2023-11-08 10:19:41 -08:00
zfs_acl.c Fixed parameter passing error when calling zfs_acl_chmod 2024-02-26 11:41:44 -08:00
zfs_ctldir.c Linux 6.7 compat: use inode atime/mtime accessors 2023-12-20 11:47:40 -08:00
zfs_debug.c zdb/ztest: send dbgmsg output to stderr 2024-05-14 09:49:00 -07:00
zfs_dir.c Linux 6.3 compat: idmapped mount API changes 2023-04-10 14:15:36 -07:00
zfs_file_os.c Cleanup: Remove branches that always evaluate the same way 2022-11-03 10:47:48 -07:00
zfs_ioctl_os.c Linux 6.3 compat: idmapped mount API changes 2023-04-10 14:15:36 -07:00
zfs_racct.c module: zfs: fix unused, remove argsused 2021-12-23 09:42:47 -08:00
zfs_sysfs.c Introduce kmem_scnprintf() 2022-10-29 13:05:11 -07:00
zfs_uio.c Use kmap_local_page instead of kmap_atomic (#16329) 2024-07-16 17:27:29 -07:00
zfs_vfsops.c Linux 6.7 compat: handle superblock shrinker member change 2023-12-20 11:47:50 -08:00
zfs_vnops_os.c Fix corruption caused by mmap flushing problems 2024-03-25 14:56:49 -07:00
zfs_znode.c Linux 6.7 compat: use inode atime/mtime accessors 2023-12-20 11:47:40 -08:00
zio_crypt.c ZIL: Assert record sizes in different places 2023-11-28 13:35:14 -08:00
zpl_ctldir.c Linux 6.6 compat: generic_fillattr has a new u32 request_mask added at arg2 2023-09-21 18:38:40 -07:00
zpl_export.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
zpl_file_range.c Linux 6.8 compat: use splice_copy_file_range() for fallback 2024-03-20 16:46:15 -07:00
zpl_file.c Fix corruption caused by mmap flushing problems 2024-03-25 14:56:49 -07:00
zpl_inode.c Linux 6.7 compat: use inode atime/mtime accessors 2023-12-20 11:47:40 -08:00
zpl_super.c Unify arc_prune_async() code 2023-10-30 16:56:04 -07:00
zpl_xattr.c Linux 6.6 compat: use inode_get/set_ctime*(...) 2023-09-21 18:38:31 -07:00
zvol_os.c Linux 6.10: rework queue limits setup 2024-07-15 17:09:55 -07:00