]> git.proxmox.com Git - mirror_zfs.git/commit
OpenZFS 9465 - ARC check for 'anon_size > arc_c/2' can stall the system
authorDon Brady <don.brady@delphix.com>
Wed, 27 Sep 2017 01:45:19 +0000 (19:45 -0600)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 30 Jul 2018 18:30:41 +0000 (11:30 -0700)
commitdae3e9ea21a73b1ca940abd4aee1993ea4be8028
treea7d9398eac1e73fdf13ae8c73fc77c051894d086
parent6b64382b17ea420b1265237ab52657a2d0a94824
OpenZFS 9465 - ARC check for 'anon_size > arc_c/2' can stall the system

In the case of one pool being built on another pool, we want
to make sure we don't end up throttling the lower (backing)
pool when the upper pool is the majority contributor to dirty
data. To insure we make forward progress during throttling, we
also check the current pool's net dirty data and only throttle
if it exceeds zfs_arc_pool_dirty_percent of the anonymous dirty
data in the cache.

Authored by: Don Brady <don.brady@delphix.com>
Reviewed by: Sebastien Roy <sebastien.roy@delphix.com>
Reviewed by: Matt Ahrens <matt@delphix.com>
Reviewed by: Prashanth Sreenivasa <pks@delphix.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Ported-by: Brian Behlendorf <behlendorf1@llnl.gov>
Porting Notes:
* The new global variables zfs_arc_dirty_limit_percent,
  zfs_arc_anon_limit_percent, and zfs_arc_pool_dirty_percent
  were intentially not added as tunable module parameters.

OpenZFS-issue: https://illumos.org/issues/9465
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/d6a4c3ef
Closes #7749
include/sys/arc.h
include/sys/spa.h
include/sys/spa_impl.h
module/zfs/arc.c
module/zfs/dsl_dir.c
module/zfs/spa_misc.c