HomeFreeBSD

Don't run the reaper if we didn't shrink the cache

Description

Don't run the reaper if we didn't shrink the cache

Calling it when nothing is evictable will cause extra kswapd cpu. Also
if we didn't shrink it's unlikely to have memory to reap because we
likely just called it microseconds ago. The exception is if we are in
direct reclaim.

You can see how hard this is being hit in kswapd with a light test
workload:

34.95%  [zfs]             [k] arc_kmem_reap_now
 5.40%  [spl]             [k] spl_kmem_cache_reap_now
 3.79%  [kernel]          [k] _raw_spin_lock
 2.86%  [spl]             [k] __spl_kmem_cache_generic_shrinker.isra.7
 2.70%  [kernel]          [k] shrink_slab.part.37
 1.93%  [kernel]          [k] isolate_lru_pages.isra.43
 1.55%  [kernel]          [k] __wake_up_bit
 1.20%  [kernel]          [k] super_cache_count
 1.20%  [kernel]          [k] __radix_tree_lookup

With ZFS just mounted but only ext4/pagecache memory pressure
arc_kmem_reap_now still consumes excessive CPU:

12.69%  [kernel]  [k] isolate_lru_pages.isra.43
10.76%  [kernel]  [k] free_pcppages_bulk
 7.98%  [kernel]  [k] drop_buffers
 7.31%  [kernel]  [k] shrink_page_list
 6.44%  [zfs]     [k] arc_kmem_reap_now
 4.19%  [kernel]  [k] free_hot_cold_page
 4.00%  [kernel]  [k] __slab_free
 3.95%  [kernel]  [k] __isolate_lru_page
 3.09%  [kernel]  [k] __radix_tree_lookup

Same pagecache only workload as above with this patch series:

11.58%  [kernel]  [k] isolate_lru_pages.isra.43
11.20%  [kernel]  [k] drop_buffers
 9.67%  [kernel]  [k] free_pcppages_bulk
 8.44%  [kernel]  [k] shrink_page_list
 4.86%  [kernel]  [k] __isolate_lru_page
 4.43%  [kernel]  [k] free_hot_cold_page
 4.00%  [kernel]  [k] __slab_free
 3.44%  [kernel]  [k] __radix_tree_lookup

 (arc_kmem_reap_now has 0 samples in perf)

AKAMAI: zfs: CR 3695042
Reviewed-by: Tim Chase <tim@chase2k.com>
Reviewed-by: Richard Yao <ryao@gentoo.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com>
Issue #6035

Details

Provenance
Debabrata Banerjee <dbanerje@akamai.com>Authored on Mar 15 2017, 11:31 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on May 2 2017, 7:50 PM
Parents
rG1a31dcf53cd7: Only wakeup waiters if we've actually done work
Branches
Unknown
Tags
Unknown

Event Timeline

Brian Behlendorf <behlendorf1@llnl.gov> committed rG44813aefad9a: Don't run the reaper if we didn't shrink the cache (authored by Debabrata Banerjee <dbanerje@akamai.com>).May 2 2017, 7:50 PM