Files
mirror_zfs/module/zfs
Brad Lewis 3ec34e5527 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
2018-12-26 13:22:28 -08:00
..
2018-10-01 10:42:05 -07:00
2015-01-16 14:41:26 -08:00
2017-08-14 10:36:48 -07:00
2017-06-26 14:36:49 -07:00
2018-10-01 10:42:05 -07:00
2018-05-29 16:00:33 -07:00
2018-05-29 16:00:33 -07:00
2018-05-01 11:24:20 -07:00
2018-10-16 11:15:04 -07:00
2018-10-16 11:15:04 -07:00
2018-10-09 14:05:13 -07:00
2018-10-16 11:15:04 -07:00
2018-08-15 09:53:44 -07:00
2018-05-29 16:00:33 -07:00
2018-10-16 11:15:04 -07:00
2018-10-16 11:15:04 -07:00
2018-05-29 16:00:33 -07:00
2018-10-16 11:15:04 -07:00
2018-05-29 16:00:33 -07:00
2018-05-29 16:00:33 -07:00
2017-10-11 16:54:48 -04:00
2015-01-16 14:41:26 -08:00
2018-11-05 11:53:49 -08:00
2018-05-29 16:00:33 -07:00
2018-05-29 16:00:33 -07:00
2018-05-29 16:00:33 -07:00
2018-03-15 10:53:58 -07:00
2018-10-01 10:42:05 -07:00
2018-03-15 10:53:58 -07:00
2010-08-31 13:41:58 -07:00
2018-05-29 16:00:33 -07:00
2018-10-24 14:37:02 -07:00
2018-05-29 16:00:33 -07:00
2018-11-11 18:09:00 -08:00
2016-11-29 14:34:33 -08:00
2018-12-14 10:04:11 -08:00
2018-05-29 16:00:33 -07:00
2018-10-17 10:30:08 -07:00
2018-05-29 16:00:33 -07:00
2018-05-29 16:00:33 -07:00
2018-05-29 16:00:33 -07:00
2018-05-29 16:00:33 -07:00
2018-02-13 14:54:54 -08:00
2018-09-26 09:50:58 -07:00
2018-10-17 10:31:38 -07:00
2018-05-29 16:00:33 -07:00
2018-02-09 10:08:05 -08:00
2018-08-27 10:04:21 -07:00
2018-05-29 16:00:33 -07:00