Makefile
- add
TAGvariable for distinguished build directory names - new targets for generating disassembly using
objdump -d - templatize recipes for the specific tests in
/ext
Test changes
multiple tests
include/atomics.h: fix asm positional constraints
pthread_mutex_lock and pthread_mutex_trylock
- new tests
tbb_spin_rw_mutex
- fix volatile cast of state variable
- support USE_BUILTIN on aarch64
- use a CPU list instead of bitmask for pure readers to allow more than 64 CPUs to be specified
- use the lock pointer from the test harness instead of a global state variable for improved reproducibility
- parameterize pause count for
atomic_backoff_pause - initialize per-thread counter to a unique value so that non-pure readers do not try to write at the same time
Lockhammer test harness
Command line flags
-T duration_sec: renamed from-D duration_sec-T tag: stores a tag string in the results JSON-v -v: increase verbosity to more verbose-o pinorder: support CPU ranges, e.g. -o 10-20:2 for even-numbered CPUs in CPU10-20, inclusive-i interleave: remove, and make interleave a subparameter to-t threads[:interleave]-h: print help only if-his used
Measurement
- always measure the TSC frequency on x86
- blackhole iterations chosen from median of 5 searches
- add
lock_acquireandlock_releasecallsite labels in disassembly
Reporting/JSON
- add a
test_type_namestring for test-specific variant - store
cpuorder_filenameandpinorder_stringin the JSON - store the
-T tagin the JSON - store the
-o pinorderand-t threads[:interleave]argument aspinorder_stringin the JSON
Support scripts
view-results-json.sh
- handle missing keys
- handle non-numerical results, isnormal when using older
jqversions - show the new pinorder/num_threads string
- add
-T tagto select results only of that tag - add
-a additional_keyflag to also show data from that key
run-tests.sh
- show summary of configuration, and require
-nor-Nto proceed - estimate runtime based on tests to run
- add flags to override the built-in lists of permuted parameters
- add
-T tagto run only from the build dirs containing the tag - add
--support to pass additional flags directly to the lh_$test program - add
-M hugepage_sizeto specify the hugepage size to use instead of the default 1GB - rename the
-T duration_secflag to-D duration_sec
json-to-command.sh
- new; reconstructs the
lh_$testnamecommand line from a JSON's measurement record