HomeFreeBSD

OpenZFS 9284 - arc_reclaim_thread has 2 jobs

Description

OpenZFS 9284 - arc_reclaim_thread has 2 jobs

Following the fix for 9018 (Replace kmem_cache_reap_now() with
kmem_cache_reap_soon), the arc_reclaim_thread() no longer blocks
while reaping. However, the code is still confusing and error-prone,
because this thread has two responsibilities. We should instead
separate this into two threads each with their own responsibility:

  1. keep arc_size under arc_c, by calling arc_adjust(), which improves arc_is_overflowing()
  2. keep enough free memory in the system, by calling arc_kmem_reap_now() plus arc_shrink(), which improves arc_available_memory().

Furthermore, we can use the zthr infrastructure to separate the
"should we do something" from "do it" parts of the logic, and
normalize the start up / shut down of the threads.

Authored by: Brad Lewis <brad.lewis@delphix.com>
Reviewed by: Matt Ahrens <mahrens@delphix.com>
Reviewed by: Serapheim Dimitropoulos <serapheim@delphix.com>
Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Reviewed by: Paul Dagnelie <pcd@delphix.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>
Reviewed by: Tim Kordas <tim.kordas@joyent.com>
Reviewed by: Tim Chase <tim@chase2k.com>
Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
Ported-by: Brad Lewis <brad.lewis@delphix.com>
Signed-off-by: Brad Lewis <brad.lewis@delphix.com>

OpenZFS-issue: https://www.illumos.org/issues/9284
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/de753e34f9
Closes #8165

Details

Provenance
Brad Lewis <brad.lewis@delphix.com>Authored on Mar 15 2017, 11:41 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Dec 26 2018, 9:22 PM
Parents
rG00f198de6b6a: Fix zfs_dirty_data_sync_percent documentation
Branches
Unknown
Tags
Unknown