Testing:
On a VM with 100GB RAM, I run a script that fills up memory by reading a large 
file, and a dtrace script that observes ARC activity, specifically calls to 
kmem_depot_ws_reap(), arc_shrink(), and the size of the ARC and amount of free 
memory in the system.  I also configured the abd chunk size to be 1KB.  After 
memory fills up (enough that the ARC wants to increase the amount of free 
memory), the ARC will both reap the caches (kmem_depot_ws_reap()) and reduce 
the arc size (arc_shrink()).  Since there are multiple abd chunks per slab, the 
ARC size must reduce significantly before there is sufficient free memory.  
Although reaping the abd cache takes several seconds, the ARC is able to reduce 
in size sufficiently to allow arc_get_data_buf_impl() to not block.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/590#issuecomment-374426372
------------------------------------------
openzfs: openzfs-developer
Permalink: 
https://openzfs.topicbox.com/groups/developer/discussions/T9a4d185b31cf8b80-M07ef67ba920d57913f5fe635
Delivery options: https://openzfs.topicbox.com/groups

Reply via email to