fix: handle EINTR correctly in get_cpu_mask_from_sysfs
[urcu.git] / tests / benchmark / runhash.sh
index dc894d4503bcfa68b5703da809e2ff864f8c0921..c3f42ebe327bb231e9a7bf503afe4ac6117ecec9 100755 (executable)
@@ -1,6 +1,30 @@
-#!/bin/bash
+#!/usr/bin/env bash
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# SPDX-FileCopyrightText: 2022 EfficiOS Inc.
+#
+
+if [ "x${URCU_TESTS_SRCDIR:-}" != "x" ]; then
+       UTILSSH="$URCU_TESTS_SRCDIR/utils/utils.sh"
+else
+       UTILSSH="$(dirname "$0")/../utils/utils.sh"
+fi
+
+# Enable TAP
+SH_TAP=1
+
+# shellcheck source=../utils/utils.sh
+source "$UTILSSH"
+
+
+# 1st parameter: seconds per test
+DURATION=$1
 
-source ../utils/tap.sh
+if [ "x${DURATION}" = "x" ]; then
+       echo "usage: $0 [DURATION]"
+       exit 1
+fi
 
 NUM_TESTS=17
 
@@ -13,27 +37,15 @@ diag "Executing Hash table test"
 #   add/remove/random
 # - validate that "nr_leaked" is always 0 in SUMMARY for all tests
 
-# 1st parameter: seconds per test
-TIME_UNITS=$1
-
-TESTPROG=./test_urcu_hash
-
-NUM_CPUS="1"
-for i in nproc gnproc; do
-       NUM_CPUS=$($i 2>/dev/null)
-       if [ "$?" -eq "0" ]; then
-               break
-       else
-               NUM_CPUS="1"
-       fi
-done
+TESTPROG="${URCU_TESTS_BUILDDIR}/benchmark/test_urcu_hash"
 
 #thread multiplier: number of processors divided by 4.
+NUM_CPUS="$(urcu_nproc)"
 if [[ ${NUM_CPUS} -lt 4 ]]; then
        NUM_CPUS=4      # Floor at 4 due to following assumptions.
 fi
 
-THREAD_MUL=$(( ${NUM_CPUS} / 4 ))
+THREAD_MUL=$((NUM_CPUS / 4))
 
 EXTRA_PARAMS=-v
 
@@ -41,19 +53,19 @@ EXTRA_PARAMS=-v
 
 # rw test, single key, replace and del randomly, 4 threads, auto resize.
 # key range: init, lookup, and update: 0 to 0
-okx ${TESTPROG} 0 $((4*${THREAD_MUL})) ${TIME_UNITS} -A -s -M 1 -N 1 -O 1 ${EXTRA_PARAMS}
+okx "${TESTPROG}" 0 $((4*THREAD_MUL)) "${DURATION}" -A -s -M 1 -N 1 -O 1 ${EXTRA_PARAMS}
 
 # rw test, single key, add unique and del randomly, 4 threads, auto resize.
 # key range: init, lookup, and update: 0 to 0
-okx ${TESTPROG} 0 $((4*${THREAD_MUL})) ${TIME_UNITS} -A -u -M 1 -N 1 -O 1 ${EXTRA_PARAMS}
+okx "${TESTPROG}" 0 $((4*THREAD_MUL)) "${DURATION}" -A -u -M 1 -N 1 -O 1 ${EXTRA_PARAMS}
 
 # rw test, single key, replace and del randomly, 2 lookup threads, 2 update threads, auto resize.
 # key range: init, lookup, and update: 0 to 0
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A -s -M 1 -N 1 -O 1 ${EXTRA_PARAMS}
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A -s -M 1 -N 1 -O 1 ${EXTRA_PARAMS}
 
 # rw test, single key, add and del randomly, 2 lookup threads, 2 update threads, auto resize.
 # key range: init, lookup, and update: 0 to 0
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A -M 1 -N 1 -O 1 ${EXTRA_PARAMS}
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A -M 1 -N 1 -O 1 ${EXTRA_PARAMS}
 
 
 # ** test updates vs lookups with default table
@@ -61,17 +73,17 @@ okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A -M 1
 # rw test, 2 lookup, 2 update threads, add and del randomly, auto resize.
 # max 1048576 buckets
 # key range: init, lookup, and update: 0 to 999999
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A ${EXTRA_PARAMS}
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A ${EXTRA_PARAMS}
 
 # rw test, 2 lookup, 2 update threads, add_replace and del randomly, auto resize.
 # max 1048576 buckets
 # key range: init, lookup, and update: 0 to 999999
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A -s ${EXTRA_PARAMS}
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A -s ${EXTRA_PARAMS}
 
 # rw test, 2 lookup, 2 update threads, add_unique and del randomly, auto resize.
 # max 1048576 buckets
 # key range: init, lookup, and update: 0 to 999999
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A -u ${EXTRA_PARAMS}
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A -u ${EXTRA_PARAMS}
 
 
 # test memory management backends
@@ -80,21 +92,21 @@ okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A -u ${
 # max buckets: 1048576
 # key range: init, lookup, and update: 0 to 99999999
 # mm backend: "order"
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A -m 1 -n 1048576 -i \
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A -m 1 -n 1048576 -i \
        -M 100000000 -N 100000000 -O 100000000 -B order ${EXTRA_PARAMS}
 
 # rw test, 2 lookup, 2 update threads, add only, auto resize.
 # max buckets: 1048576
 # key range: init, lookup, and update: 0 to 99999999
 # mm backend: "chunk"
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A -m 1 -n 1048576 -i \
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A -m 1 -n 1048576 -i \
        -M 100000000 -N 100000000 -O 100000000 -B chunk ${EXTRA_PARAMS}
 
 # rw test, 2 lookup, 2 update threads, add only, auto resize.
 # max buckets: 1048576
 # key range: init, lookup, and update: 0 to 99999999
 # mm backend: "mmap"
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A -m 1 -n 1048576 -i \
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A -m 1 -n 1048576 -i \
        -M 100000000 -N 100000000 -O 100000000 -B mmap ${EXTRA_PARAMS}
 
 
@@ -106,7 +118,7 @@ okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A -m 1
 # key range: lookup: 1000000 to 1999999
 # NOTE: reader threads in this test should never have a successful
 # lookup. TODO
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A \
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A \
        -R 1000000 ${EXTRA_PARAMS}
 
 # ** small key range
@@ -114,19 +126,19 @@ okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A \
 # rw test, 2 lookup, 2 update threads, add and del randomly, auto resize.
 # max 1048576 buckets
 # key range: init, update, and lookups: 0 to 9
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A \
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A \
        -M 10 -N 10 -O 10 ${EXTRA_PARAMS}
 
 # rw test, 2 lookup, 2 update threads, add_unique and del randomly, auto resize.
 # max 1048576 buckets
 # key range: init, update, and lookups: 0 to 9
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A \
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A \
        -M 10 -N 10 -O 10 -u ${EXTRA_PARAMS}
 
 # rw test, 2 lookup, 2 update threads, add_replace and del randomly, auto resize.
 # max 1048576 buckets
 # key range: init, update, and lookups: 0 to 9
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A \
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A \
        -M 10 -N 10 -O 10 -s ${EXTRA_PARAMS}
 
 # ** lookup for known keys
@@ -138,7 +150,7 @@ okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A \
 # key range: updates: 10 to 19
 # NOTE: reader threads in this test should always have successful
 # lookups. TODO
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A \
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A \
        -M 10 -N 10 -O 10 -R 0 -T 0 -S 10 -k 10 -s ${EXTRA_PARAMS}
 
 # ** Uniqueness test
@@ -147,12 +159,12 @@ okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A \
 # max 1048576 buckets
 # asserts that no duplicates are observed by reader threads
 # standard length hash chains
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A \
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A \
        -U ${EXTRA_PARAMS}
 
 # rw test, 2 lookup, 2 update threads, add_unique, add_replace and del randomly, auto resize.
 # max 1048576 buckets
 # asserts that no duplicates are observed by reader threads
 # create long hash chains: using modulo 4 on keys as hash
-okx ${TESTPROG} $((2*${THREAD_MUL})) $((2*${THREAD_MUL})) ${TIME_UNITS} -A \
+okx "${TESTPROG}" $((2*THREAD_MUL)) $((2*THREAD_MUL)) "${DURATION}" -A \
        -U -C 4 ${EXTRA_PARAMS}
This page took 0.025462 seconds and 4 git commands to generate.