$ make
You should mount your PMEM* to a NVM-aware filesystem with DAX.
$ sudo mkfs.xfs /dev/pmem0
$ sudo mkdir /mnt/pmem
$ sudo mount -o dax /dev/pmem0 /mnt/pmem
$ sudo modprobe msr
$ make
$ cd bin
$ sudo ./PiBench [lib.so] [args...]
eg:
$ sudo ./PiBench ./Dash.so -r 0 -i 1 -t 32 -n 1024 -p 1024
The PiBench
executable is generated and supports the following arguments:
$ ./PiBench --help
Benchmark framework for persistent indexes.
Usage:
PiBench [OPTION...] INPUT
--input arg Absolute path to library file
-n, --records arg Number of records to load (default: 0)
-N, --negative_ratio arg Negative search ratio (default: 0.000000)
-S, --hash_size arg hashtable size (default: 4096)
-M, --test_mode arg Test mode (default: THROUGHPUT)
-p, --operations arg Number of operations to execute (default: 1024)
-t, --threads arg Number of threads to use (default: 1)
-r, --read_ratio arg Ratio of read operations (default: 0.000000)
-i, --insert_ratio arg Ratio of insert operations (default: 1.000000)
-d, --remove_ratio arg Ratio of remove operations (default: 0.000000)
--skip_load Skip the load phase (default: true)
--distribution arg Key distribution to use (default: UNIFORM)
--help Print help
eg:
$ sudo ./PiBench ./Dash.so -S 16777216 -p 200000000 -M THROUGHPUT
the load factor of hash table during execution. eg:
$ sudo ./PiBench ./CCEH.so -S 16777216 -p 200000000 -M LOAD_FACTOR
For Dash, you need to recompile with DA_FLAGS=-DCOUNTING
$ make clean -C hash/Dash
$ make DA_FLAGS=-DCOUNTING -C hash/Dash
$ make
$ sudo ./PiBench ./Dash.so -S 16777216 -p 200000000 -M RESIZE
$ sudo ./PiBench ./Dash.so -S 16777216 -p 200000000 -M PM
$ sudo ./PiBench ./Dash.so -S 16777216 -p 200000000 -M LATENCY