Dbuf hash table should be sized as is the arc hash table
Commit 49ddb31506
added the
zfs_arc_average_blocksize parameter to allow control over the size of
the arc hash table. The dbuf hash table's size should be determined
similarly.
Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #3721
This commit is contained in:
parent
6cde64351e
commit
69de34219a
|
@ -51,6 +51,9 @@ typedef void arc_done_func_t(zio_t *zio, arc_buf_t *buf, void *private);
|
|||
typedef void arc_prune_func_t(int64_t bytes, void *private);
|
||||
typedef int arc_evict_func_t(void *private);
|
||||
|
||||
/* Shared module parameters */
|
||||
extern int zfs_arc_average_blocksize;
|
||||
|
||||
/* generic arc_done_func_t's which you can use */
|
||||
arc_done_func_t arc_bcopy_func;
|
||||
arc_done_func_t arc_getbuf_func;
|
||||
|
|
|
@ -376,10 +376,11 @@ dbuf_init(void)
|
|||
|
||||
/*
|
||||
* The hash table is big enough to fill all of physical memory
|
||||
* with an average 4K block size. The table will take up
|
||||
* totalmem*sizeof(void*)/4K (i.e. 2MB/GB with 8-byte pointers).
|
||||
* with an average block size of zfs_arc_average_blocksize (default 8K).
|
||||
* By default, the table will take up
|
||||
* totalmem * sizeof(void*) / 8K (1MB per GB with 8-byte pointers).
|
||||
*/
|
||||
while (hsize * 4096 < physmem * PAGESIZE)
|
||||
while (hsize * zfs_arc_average_blocksize < physmem * PAGESIZE)
|
||||
hsize <<= 1;
|
||||
|
||||
retry:
|
||||
|
|
Loading…
Reference in New Issue