brd
device driver), PCM-disk introduces delays when writing a block./dev/pcm0
and /dev/pcm0-ctl
must exist. To create the necessary device nodes, you may use the provided $MNEMOSYNE/kernelmode/pcmdisk/dev.sh
script.
To load the PCM-disk, create an ext2 file system on it and mount the file system on /mnt/pcmfs
, you may use the provided $MNEMOSYNE/kernelmode/pcmdisk/fs.sh
script:
% cd $MNEMOSYNE/kernelmode/pcmdisk % ./fs.sh -c
To unmount the file system and unload PCM-disk, you may use the same script:
% cd $MNEMOSYNE/kernelmode/pcmdisk % ./fs.sh -r
pcmdiskctl
user-mode application.
pcmdiskctl
accepts the following command line options:
--print-config
: Prints the current PCM-disk configuration --set-pcm-bw=
: Sets emulated PCM bandwidth (in MB/s) --set-dram-bw=
: Sets DRAM system bandwidth (in MB/s) --reset-stat
: Resets statistics --print-stat
: Prints statistics--set-pcm-bw
and --set-dram-bw
may be used to control the available bandwidth. You may follow the following procedure to configure and calibrate the available bandwidth:
--set-dram-bw
. --reset-stat
. --set-pcm-bw
. --print-stat
.
libmcore
library
reset_segments
: Clears persistent regions upon restart. Can be used to force a clean start of the application. Default is false
. segments_dir:
The directory where the files backing the persistent regions are placed. Default is $CWD/
.segments.libmtm
library force_mode:
Sets the transaction execution mode. Execution modes include pwbetl
(durable w/ locking) and pwbnl
(durable w/o locking). Default is pwbetl
. stats
: Enables statistics collection. Library must be compiled with statistics support. Default is false
.
mcore: { segments_dir = "/tmp/segments"; } mtm: { force_mode = "pwbetl"; stats = false; }
As an extreme, you may set the following watermarks:
echo 100 > /proc/sys/vm/dirty_background_ratio
echo 100 > /proc/sys/vm/dirty_ratio
echo 10000 > /proc/sys/vm/dirty_expire_centisecs
kvdriver
($MNEMOSYNE/usermode/bench/kvstore/kvdriver
) to exercise four key-value stores (persistent hashtable) implementations: kvdriver-ht
: exercises Berkeley DB's hash table (bdb
) running on PCM-disk and a C Hash Table (ht
) by Christopher Clark extended to support multiple threads and Mnemosyne persistence. kvdriver-tc-base
: exercises the base version of TokyoCabinet running on PCM-disk kvdriver-tc-mtm
: exercises the Mnemosyne based version of TokyoCabinet
kvdriver
accepts the following command line options:
--ubench=
: Microbenchmark to run (please see below) --runtime=
: Runtime of the experiement in seconds --nthreads=
: Number of threads --vsize=
: Value size --nkeys=
: Number of keys in the hashtablekvdriver-ht
, some microbenchmarks of interest are: mtm_mix_latency_etl:
measures the latency of inserting/deleting elements to a persistent hash table mtm_mix_throughput_etl:
measures the throughput of inserting/deleting elements to a persistent hash table bdb_mix_latency:
measures the latency of inserting/deleting elements to a BDB hash table bdb_mix_throughput:
measures the throughput of inserting/deleting elements to a BDB hash tablekvdriver-tc-base
, some microbenchmarks of interest are: tc_base_mix_latency:
measures the latency of inserting/deleting elements to the base TC hash table tc_base_mix_throughput:
measures the throughput of inserting/deleting elements to the base TC hash tablekvdriver-tc-mtm
, some microbenchmarks of interest are: tc_mtm_mix_latency_etl:
measures the latency of inserting/deleting elements to a Mnemosyne based TC hash table tc_mtm_mix_throughput_etl:
measures the throughput of inserting/deleting elements to a Mnemosyne based TC hash table$MNEMOSYNE/usermode/bench/openldap/driver/scripts/mnemosyne
may be used to config and run the Mnemosyne-based version of OpenLDAP. Please ensure that: include
in $MNEMOSYNE/usermode/bench/openldap/driver/scripts/mnemosyne/slapd.conf
points to the right schema file. $MNEMOSYNE/usermode/bench/openldap/driver/scripts/query
may be used to test OpenLDAP with simple add/search queries.$MNEMOSYNE/usermode/bench/openldap/driver/slamd/slamd-template
.