Skip to content

Commit

Permalink
rhashtable-test: calculate max_entries value by default
Browse files Browse the repository at this point in the history
A maximum table size of 64k entries is insufficient for the multiple
threads test even in default configuration (10 threads * 50000 objects =
500000 objects in total). Since we know how many objects will be
inserted, calculate the max size unless overridden by parameter.

Note that specifying the exact number of objects upon table init won't
suffice as that value is being rounded down to the next power of two -
anticipate this by rounding up to the next power of two in beforehand.

Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Phil Sutter authored and David S. Miller committed Nov 23, 2015
1 parent 9e9089e commit 95e435a
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions lib/test_rhashtable.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ static int runs = 4;
module_param(runs, int, 0);
MODULE_PARM_DESC(runs, "Number of test runs per variant (default: 4)");

static int max_size = 65536;
static int max_size = 0;
module_param(max_size, int, 0);
MODULE_PARM_DESC(runs, "Maximum table size (default: 65536)");
MODULE_PARM_DESC(runs, "Maximum table size (default: calculated)");

static bool shrinking = false;
module_param(shrinking, bool, 0);
Expand Down Expand Up @@ -321,7 +321,7 @@ static int __init test_rht_init(void)
entries = min(entries, MAX_ENTRIES);

test_rht_params.automatic_shrinking = shrinking;
test_rht_params.max_size = max_size;
test_rht_params.max_size = max_size ? : roundup_pow_of_two(entries);
test_rht_params.nelem_hint = size;

pr_info("Running rhashtable test nelem=%d, max_size=%d, shrinking=%d\n",
Expand Down Expand Up @@ -367,6 +367,8 @@ static int __init test_rht_init(void)
return -ENOMEM;
}

test_rht_params.max_size = max_size ? :
roundup_pow_of_two(tcount * entries);
err = rhashtable_init(&ht, &test_rht_params);
if (err < 0) {
pr_warn("Test failed: Unable to initialize hashtable: %d\n",
Expand Down

0 comments on commit 95e435a

Please sign in to comment.