38 lines
1.5 KiB
Bash
38 lines
1.5 KiB
Bash
|
#!/bin/bash
|
||
|
if [ $# -eq 0 ] || [ $# -gt 2 ]
|
||
|
then
|
||
|
echo "Usage: generate_profile.sh Path_Of_Foundation_Build_Directory Storage_Engine"
|
||
|
exit 1
|
||
|
fi
|
||
|
fdbdir=$1
|
||
|
storage_engine='ssd'
|
||
|
if [ $# -eq 2 ]
|
||
|
then
|
||
|
storage_engine=$2
|
||
|
fi
|
||
|
|
||
|
export LD_LIBRARY_PATH=$fdbdir/lib:$LD_LIBRARY_PATH
|
||
|
export FDB_CLUSTER_FILE=$fdbdir/fdb.cluster
|
||
|
export LLVM_PROFILE_FILE=$fdbdir/sandbox/fdb-%p.profraw
|
||
|
$fdbdir/bin/fdbmonitor --conffile $fdbdir/sandbox/foundationdb.conf --lockfile $fdbdir/sandbox/fdbmonitor.pid &
|
||
|
# This profile will be ignored
|
||
|
export LLVM_PROFILE_FILE=$fdbdir/sandbox/cli-%m.profraw
|
||
|
$fdbdir/bin/fdbcli -C $fdbdir/fdb.cluster --exec "configure new $storage_engine single"
|
||
|
export LLVM_PROFILE_FILE=$fdbdir/sandbox/mako-build-%m.profraw
|
||
|
$fdbdir/bin/mako -p 64 -t 1 --keylen 32 --vallen 16 --mode build --rows 10000 --trace --trace_format json
|
||
|
export LLVM_PROFILE_FILE=$fdbdir/sandbox/mako-run-%m.profraw
|
||
|
$fdbdir/bin/mako -p 1 -t 2 --keylen 32 --vallen 16 --mode run --rows 10000 --transaction grvg7i2gr1:48cr1:48 --seconds 60 --trace $fdbdir/sandbox/logs --trace_format json
|
||
|
|
||
|
# Shutdown fdbserver to trigger profile dumping
|
||
|
fdbmonitor_pid=$(cat $fdbdir/sandbox/fdbmonitor.pid)
|
||
|
fdbserver_pid=$(cat /proc/$fdbmonitor_pid/task/$fdbmonitor_pid/children)
|
||
|
gdb --batch --eval-command 'call (void)exit(0)' --pid $fdbserver_pid
|
||
|
|
||
|
# Clean up
|
||
|
kill -9 $fdbmonitor_pid
|
||
|
|
||
|
# Profile for server
|
||
|
llvm-profdata merge -output=$fdbdir/fdb.profdata $fdbdir/sandbox/fdb-*.profraw
|
||
|
# Profile for client
|
||
|
llvm-profdata merge -output=$fdbdir/mako.profdata $fdbdir/sandbox/mako-*.profraw
|