https://reviews.csiden.org/r/61/

5034 ARC's buf\_hash\_table is too small
Reviewed by: George Wilson <[email protected]\>
Reviewed by: Christopher Siden <[email protected]\>

Original author: Matthew Ahrens

The ARC puts all (non-anonymous) arc_buf_hdr_t's in a hash table, which is
created at system boot time.  The hash table is sized such that if all of
physical memory was filled with 64K blocks, the hash chain length would
average
less than 1.0.  However, on a system with typical block size of 8k, this
can lead to
long hash chain lengths.  I've observed average length ~6.5; theoretically
it
could be up to 16 (because evicted "ghost" entries are also in the
hashtable).

By increasing the hash table size to have enough entries for average length
1.0
when memory is filled with 8k blocks, we can obtain a 18% performance
improvement on cached reads.  (680MB/s -> 805MB/s)

The hash table size should also be tunable, rather than hard coded.

--matt
_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to