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
