Matthew Ahrens via illumos-zfs
2014-07-24 03:36:29 UTC
https://reviews.csiden.org/r/61/
5034 ARC's buf\_hash\_table is too small
Reviewed by: George Wilson <***@delphix.com\>
Reviewed by: Christopher Siden <***@delphix.com\>
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
-------------------------------------------
illumos-zfs
Archives: https://www.listbox.com/member/archive/182191/=now
RSS Feed: https://www.listbox.com/member/archive/rss/182191/23047029-187a0c8d
Modify Your Subscription: https://www.listbox.com/member/?member_id=23047029&id_secret=23047029-2e85923f
Powered by Listbox: http://www.listbox.com
5034 ARC's buf\_hash\_table is too small
Reviewed by: George Wilson <***@delphix.com\>
Reviewed by: Christopher Siden <***@delphix.com\>
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
-------------------------------------------
illumos-zfs
Archives: https://www.listbox.com/member/archive/182191/=now
RSS Feed: https://www.listbox.com/member/archive/rss/182191/23047029-187a0c8d
Modify Your Subscription: https://www.listbox.com/member/?member_id=23047029&id_secret=23047029-2e85923f
Powered by Listbox: http://www.listbox.com