freebsd-skq/sys/cddl/contrib/opensolaris/uts
mav 892774d4dc MFV r336930: 9284 arc_reclaim_thread has 2 jobs
`arc_reclaim_thread()` calls `arc_adjust()` after calling
`arc_kmem_reap_now()`; `arc_adjust()` signals `arc_get_data_buf()` to
indicate that we may no longer be `arc_is_overflowing()`.

The problem is, `arc_kmem_reap_now()` can take several seconds to
complete, has no impact on `arc_is_overflowing()`, but due to how the
code is structured, can impact how long the ARC will remain in the
`arc_is_overflowing()` state.

The fix is to use seperate threads to:

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()`.

illumos/illumos-gate@de753e34f9

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>
Approved by: Garrett D'Amore <garrett@damore.org>
Author: Brad Lewis <brad.lewis@delphix.com>
2019-03-15 18:59:04 +00:00
..
aarch64 Revert r344587. 2019-02-26 17:33:56 +00:00
arm Revert r344587. 2019-02-26 17:33:56 +00:00
common MFV r336930: 9284 arc_reclaim_thread has 2 jobs 2019-03-15 18:59:04 +00:00
intel Fix fasttrap_sig{trap,segv}(). 2019-02-26 18:20:41 +00:00
mips Revert r344587. 2019-02-26 17:33:56 +00:00
powerpc Correct initialization of pc on powerpc. 2017-12-12 20:41:11 +00:00
riscv Revert r344587. 2019-02-26 17:33:56 +00:00