<HTML><BODY><div><div><br>Resurrect bench.tarantool.org:<br>- submit perf results into bench.tarantool.org database<br>- refactoring bench running scripts</div><div> </div><div>Fix docker files for perf testing:<br>- adding python "requests" module needed for publish script.</div><div> </div><div>Closes #4865</div><div> </div><div>Github: https://github.com/tarantool/bench-run/tree/opiskunov/gh-4865-submit-perf-results<br>Issue: https://github.com/tarantool/tarantool/issues/4865<br>---<br> benchs/cbench/run.sh          | 60 +++++++++++++++++++++++++++++-----------<br> benchs/linkbench/run.sh       | 26 ++++++++++++------<br> benchs/nosqlbench/run.sh      | 46 +++++++++++++------------------<br> benchs/publication/publish.py | 64 +++++++++++++++++++++++++++++++++++++++++++<br> benchs/sysbench/run.sh        | 52 ++++++++++++++---------------------<br> benchs/tpcc/run.sh            | 38 ++++++++++++++-----------<br> benchs/ycsb/run.sh            | 42 ++++++++++++++++------------<br> dockerfiles/ubuntu_benchs     |  3 ++<br> 8 files changed, 216 insertions(+), 115 deletions(-)<br> create mode 100755 benchs/publication/publish.py</div><div> </div><div>diff --git a/benchs/cbench/run.sh b/benchs/cbench/run.sh<br>index 4d07972..77b88e7 100755<br>--- a/benchs/cbench/run.sh<br>+++ b/benchs/cbench/run.sh<br>@@ -1,36 +1,64 @@<br> #!/usr/bin/env bash</div><div> </div><div>-kill `pidof tarantool`<br>-set -e<br>+set -eu<br> set -o pipefail</div><div> </div><div> TAR_VER=$(tarantool -v | grep -e "Tarantool" |  grep -oP '\s\K\S*')<br>-echo ${TAR_VER} | tee cbench_t_version.txt<br>+numaopts="numactl --membind=1 --cpunodebind=1 --physcpubind=11"<br>+cbench_opts=500</div><div> </div><div> killall tarantool 2>/dev/null || true<br> rm -rf 5* 0*<br>-sync<br>+sync && echo "sync passed" || echo "sync failed with error" $?<br> echo 3 > /proc/sys/vm/drop_caches<br>-numactl --membind=1 --cpunodebind=1 --physcpubind=9 tarantool /opt/cbench/cbench_runner.lua memtx 2>&1 | tee cbench_output_memtx.txt<br>+$numaopts tarantool /opt/cbench/cbench_runner.lua memtx 2>&1 | tee cbench_output_memtx.txt</div><div> </div><div> killall tarantool 2>/dev/null || true<br> rm -rf 5* 0*<br>-sync<br>+sync && echo "sync passed" || echo "sync failed with error" $?<br> echo 3 > /proc/sys/vm/drop_caches<br>-numactl --membind=1 --cpunodebind=1 --physcpubind=10 tarantool /opt/cbench/cbench_runner.lua vinyl fsync 500 2>&1 | tee cbench_output_vinyl_fsync.txt<br>+$numaopts tarantool /opt/cbench/cbench_runner.lua vinyl fsync $cbench_opts 2>&1 | tee cbench_output_vinyl_fsync.txt</div><div> </div><div> killall tarantool 2>/dev/null || true<br> rm -rf 5* 0*<br>-sync<br>+sync && echo "sync passed" || echo "sync failed with error" $?<br> echo 3 > /proc/sys/vm/drop_caches<br>-numactl --membind=1 --cpunodebind=1 --physcpubind=11 tarantool /opt/cbench/cbench_runner.lua vinyl write 500 2>&1 | tee cbench_output_memtx_write.txt<br>-<br>-grep "^?tab" cbench_output_memtx.txt | sed "s/.*name=//"| sed "s/&param=/:/"| sed "s/cb\./cb\.memtx\./"| tee -a cbench_result.txt<br>-grep "^?tab" cbench_output_vinyl_fsync.txt | sed "s/.*name=//"| sed "s/&param=/:/"| sed "s/cb\./cb\.vinyl\.fsync\./"| tee -a cbench_result.txt<br>-grep "^?tab" cbench_output_memtx_write.txt | sed "s/.*name=//"| sed "s/&param=/:/"| sed "s/cb\./cb\.vinyl\.write\./"| tee -a cbench_result.txt<br>+$numaopts tarantool /opt/cbench/cbench_runner.lua vinyl write $cbench_opts 2>&1 | tee cbench_output_vinyl_write.txt</div><div> </div><div>-#mv tarantool-server.log cbench_tarantool_server.log<br>+grep "^?tab=cbench.tree" cbench_output_memtx.txt | \<br>+  sed "s/.*name=//"| sed "s/&param=/:/"| sed "s/cb\./cb\.memtx\./"| \<br>+  tee -a cbench-memtx-tree_result.txt<br>+grep "^?tab=cbench.hash" cbench_output_memtx.txt | \<br>+  sed "s/.*name=//"| sed "s/&param=/:/"| sed "s/cb\./cb\.memtx\./"| \<br>+  tee -a cbench-memtx-hash_result.txt<br>+grep "^?tab" cbench_output_vinyl_fsync.txt | \<br>+  sed "s/.*name=//"| sed "s/&param=/:/"| sed "s/cb\./cb\.vinyl\.fsync\./"| \<br>+  tee -a cbench-vinyl-fsync_result.txt<br>+grep "^?tab" cbench_output_vinyl_write.txt | \<br>+  sed "s/.*name=//"| sed "s/&param=/:/"| sed "s/cb\./cb\.vinyl\.write\./"| \<br>+  tee -a cbench-vinyl-write_result.txt</div><div> </div><div>-echo "RESULTS:"<br>-cat cbench_result.txt<br>+echo ${TAR_VER} | tee cbench-memtx-tree_t_version.txt<br>+echo ${TAR_VER} | tee cbench-memtx-hash_t_version.txt<br>+echo ${TAR_VER} | tee cbench-vinyl-fsync_t_version.txt<br>+echo ${TAR_VER} | tee cbench-vinyl-write_t_version.txt<br>+echo ${TAR_VER} | tee cbench_t_version.txt</div><div> </div><div>+echo "Tarantool TAG:"<br>+cat cbench_t_version.txt<br>+echo "Overall results:"<br>+echo "================"<br>+echo "RESULTS (cbench-memtx-tree_result.txt):"<br>+cat cbench-memtx-tree_result.txt<br>+echo " "<br>+echo "RESULTS (cbench-memtx-hash_result.txt):"<br>+cat cbench-memtx-hash_result.txt<br>+echo " "<br>+echo "RESULTS (cbench-vinyl-fsync_result.txt):"<br>+cat cbench-vinyl-fsync_result.txt<br>+echo " "<br>+echo "RESULTS (cbench-vinyl-write_result.txt):"<br>+cat cbench-vinyl-write_result.txt<br>+echo " "<br>+echo "Publish data to bench database"<br>+/opt/bench-run/benchs/publication/publish.py<br>diff --git a/benchs/linkbench/run.sh b/benchs/linkbench/run.sh<br>index 6738436..aac7d3c 100755<br>--- a/benchs/linkbench/run.sh<br>+++ b/benchs/linkbench/run.sh<br>@@ -1,19 +1,16 @@<br> #!/usr/bin/env bash</div><div> </div><div>-kill `pidof tarantool`<br>-<br>-set -e<br>+set -eu<br> set -o pipefail</div><div> </div><div> TAR_VER=$(tarantool -v | grep -e "Tarantool" |  grep -oP '\s\K\S*')<br>-echo ${TAR_VER} | tee linkbench_t_version.txt<br>+numaopts="numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11"<br>+base_dir=$(pwd)</div><div> </div><div> cd /opt/linkbench && mvn clean package -Dmaven.test.skip=true<br> cd src/tarantool && make<br> cd -</div><div> </div><div>-numaopts="numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11"<br>-<br> # use always newly created path specialy mounted if needed<br> wpath=/builds/ws<br> rm -rf $wpath<br>@@ -30,8 +27,21 @@ sed "s/^maxid1 = .*/maxid1 = 5000000/g" -i /opt/linkbench/config/FBWorkload.prop<br> sed "s/^requesters = .*/requesters = 1/g" -i $cfgfile<br> sed "s/^requests = .*/requests = 2000000/g" -i $cfgfile<br> $numaopts /opt/linkbench/bin/linkbench -c $cfgfile -l 2>&1 | tee loading.res.txt<br>-sync<br>+<br>+sync && echo "sync passed" || echo "sync failed with error" $?<br> echo 3 > /proc/sys/vm/drop_caches<br> $numaopts /opt/linkbench/bin/linkbench -c $cfgfile -r 2>&1 | tee linkbench_output.txt</div><div> </div><div>-grep "REQUEST PHASE COMPLETED" linkbench_output.txt | sed "s/.*second = /linkbench:/" | tee -a linkbench_result.txt<br>+grep "REQUEST PHASE COMPLETED" linkbench_output.txt | sed "s/.*second = /linkbench:/" | tee -a linkbench.ssd_result.txt<br>+echo ${TAR_VER} | tee linkbench.ssd_t_version.txt<br>+cp -f linkbench.ssd_t_version.txt $base_dir<br>+cp -f linkbench.ssd_result.txt $base_dir<br>+<br>+echo "Tarantool TAG:"<br>+cat linkbench.ssd_t_version.txt<br>+echo "Overall results:"<br>+echo "================"<br>+cat linkbench.ssd_result.txt<br>+echo " "<br>+echo "Publish data to bench database"<br>+/opt/bench-run/benchs/publication/publish.py<br>diff --git a/benchs/nosqlbench/run.sh b/benchs/nosqlbench/run.sh<br>index c9491f5..157f372 100755<br>--- a/benchs/nosqlbench/run.sh<br>+++ b/benchs/nosqlbench/run.sh<br>@@ -1,34 +1,22 @@<br> #!/usr/bin/env bash</div><div> </div><div>+set -eu<br>+set -o pipefail<br>+<br> type=$1<br> if [ "$type" == "" ]; then<br>     type=hash<br> fi</div><div> </div><div> TAR_VER=$(tarantool -v | grep -e "Tarantool" |  grep -oP '\s\K\S*')<br>-echo ${TAR_VER} | tee nosqlbench_t_version.txt<br>-<br>-kill `pidof tarantool`<br>-<br>-#set -e<br>-#<br>-#set -o pipefail<br>+numaopts="numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11"</div><div> </div><div> killall tarantool 2>/dev/null || true<br>-rm -rf 0*.xlog 0*.snap<br>-sync<br>+sync && echo "sync passed" || echo "sync failed with error" $?<br> echo 3 > /proc/sys/vm/drop_caches</div><div> </div><div>-#cd /opt/nosqlbench/<br>-#cmake . &&  make -j<br>-#cd -<br>-#<br>-#tarantool -v<br>-#<br>-free -h<br>-numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11 tarantool `dirname $0`/tnt_${type}.lua 2>&1 &<br>+$numaopts tarantool `dirname $0`/tnt_${type}.lua 2>&1 &<br> sed  "s/port 3303/port 3301/" /opt/nosqlbench/src/nosqlbench.conf -i<br>-#sed  "s/request_count 4000000/request_count 400000/" /opt/nosqlbench/src/nosqlbench.conf -i<br> sed  "s/benchmark 'no_limit'/benchmark 'time_limit'/" /opt/nosqlbench/src/nosqlbench.conf -i<br> sed  "s/time_limit 10/time_limit 2000/" /opt/nosqlbench/src/nosqlbench.conf -i<br> sed  "s/request_batch_count 1/request_batch_count 10/" /opt/nosqlbench/src/nosqlbench.conf -i<br>@@ -36,14 +24,18 @@ sed  "s/rps 12000/rps 20000/" /opt/nosqlbench/src/nosqlbench.conf -i<br> sleep 5<br> echo "Run NB"<br> # WARNING: don't try to save output from stderr - file will use the whole disk space !<br>-numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11 /opt/nosqlbench/src/nb /opt/nosqlbench/src/nosqlbench.conf | \<br>+$numaopts  /opt/nosqlbench/src/nb /opt/nosqlbench/src/nosqlbench.conf | \<br>     grep -v "Warmup" | grep -v "Failed to allocate" >nosqlbench_output.txt || cat nosqlbench_output.txt</div><div> </div><div>-#echo "Latest 1000 lines:"<br>-#tail -1000 nosqlbench_output.txt<br>-<br>-echo "Getting results"<br>-grep "TOTAL RPS STATISTICS:" nosqlbench_output.txt -A6 | awk -F "|" 'NR > 4 {print $2,":", $4}' > nosqlbench_result.txt<br>-<br>-cat nosqlbench_result.txt<br>-<br>+grep "TOTAL RPS STATISTICS:" nosqlbench_output.txt -A6 | \<br>+  awk -F "|" 'NR > 4 {print $2,":", $4}' > noSQLbench.${type}_result.txt<br>+echo ${TAR_VER} | tee noSQLbench.${type}_t_version.txt<br>+<br>+echo "Tarantool TAG:"<br>+cat noSQLbench.${type}_t_version.txt<br>+echo "Overall results:"<br>+echo "================"<br>+cat noSQLbench.${type}_result.txt<br>+echo " "<br>+echo "Publish data to bench database"<br>+/opt/bench-run/benchs/publication/publish.py<br>diff --git a/benchs/publication/publish.py b/benchs/publication/publish.py<br>new file mode 100755<br>index 0000000..42bc53a<br>--- /dev/null<br>+++ b/benchs/publication/publish.py<br>@@ -0,0 +1,64 @@<br>+#!/usr/bin/env python<br>+import fnmatch<br>+import os<br>+from urllib import urlencode<br>+import requests<br>+<br>+<br>+def parse_bench(filename):<br>+    with open(filename) as raw_data:<br>+        return raw_data.readlines()<br>+<br>+<br>+def get_version(filename):<br>+    with open(filename) as raw_data:<br>+        version = raw_data.readlines()[-1]<br>+        return version.split()[0]<br>+<br>+<br>+def push_to_microb(server, token, name, value, version, tab):<br>+    uri = 'http://%s/push?%s' % (server, urlencode(dict(<br>+        key=token, name=name, param=value,<br>+        v=version, unit='trps', tab=tab<br>+    )))<br>+<br>+    r = requests.get(uri)<br>+    if r.status_code == 200:<br>+        print('Export complete')<br>+    else:<br>+        print('Export error http: %d' % r.status_code)<br>+        print('Export error text: %d' % r.text)<br>+<br>+<br>+def main():<br>+    if "MICROB_WEB_TOKEN" in os.environ and "MICROB_WEB_HOST" in os.environ:<br>+        bench = {}<br>+        res = []<br>+        current_data = {}<br>+        version = ''<br>+        for file in os.listdir('.'):<br>+            if fnmatch.fnmatch(file, '*_result.txt'):<br>+                values = parse_bench(file)<br>+                benchmark = file.split('_')[0]<br>+                version = get_version('{}_t_version.txt'.format(benchmark))<br>+                for value in values:<br>+                    test_name = value.split(':')[0]<br>+                    test_res = float(value.split(':')[1])<br>+                    res.append(test_res)<br>+                    push_to_microb(<br>+                        os.environ['MICROB_WEB_HOST'],<br>+                        os.environ['MICROB_WEB_TOKEN'],<br>+                        test_name,<br>+                        test_res,<br>+                        version,<br>+                        benchmark,<br>+                    )<br>+        print ("VERSION - ", version)<br>+    else:<br>+        print("MICROB params not specified")<br>+<br>+    return 0<br>+<br>+<br>+if __name__ == '__main__':<br>+    main()<br>diff --git a/benchs/sysbench/run.sh b/benchs/sysbench/run.sh<br>index 6a69d14..a9cf2f3 100755<br>--- a/benchs/sysbench/run.sh<br>+++ b/benchs/sysbench/run.sh<br>@@ -1,18 +1,12 @@<br> #!/usr/bin/env bash</div><div> </div><div>-runs=10<br>-if [ "$1" != "" ]; then<br>-    runs=$1<br>-fi<br>-<br>-kill `pidof tarantool`<br>-<br>-set -e<br>+set -eu<br> set -o pipefail</div><div> </div><div>+runs=10<br>+<br> TAR_VER=$(tarantool -v | grep -e "Tarantool" |  grep -oP '\s\K\S*')<br>-echo ${TAR_VER} | tee sysbench_t_version.txt<br>-set -e<br>+numaconf="numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11"</div><div> </div><div> ARRAY_TESTS=(<br>     "oltp_read_only"<br>@@ -28,27 +22,17 @@ ARRAY_TESTS=(<br> #    "bulk_insert"<br> )</div><div> </div><div>-if [ -n "${TEST}" ]; then ARRAY_TESTS=("${TEST}"); fi<br>-<br>-<br>-if [ ! -n "${WARMUP_TIME}" ]; then WARMUP_TIME=5; fi<br>-if [ ! -n "${TIME}" ]; then TIME=20; fi<br>-if [ ! -n "${DBMS}" ]; then DBMS="tarantool"; fi<br>-if [ ! -n "${THREADS}" ]; then THREADS=200; fi<br>-<br>-if [ -n "${USER}" ]; then USER=--${DBMS}-user=${USER}; fi<br>-if [ -n "${PASSWORD}" ]; then PASSWORD=--${DBMS}-password=${PASSWORD}; fi<br>-<br>-numaconf="--membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11"<br>+WARMUP_TIME=5<br>+TIME=20<br>+DBMS="tarantool"<br>+THREADS=200<br> opts="--db-driver=${DBMS} --threads=${THREADS}"</div><div> </div><div> export LD_LIBRARY_PATH=/usr/local/lib</div><div> </div><div>-rm -f sysbench_result.txt<br>-set -o pipefail<br> for test in "${ARRAY_TESTS[@]}"; do<br>     res=0<br>-    tlog=sysbench_${test}_result.txt<br>+    tlog=sysbench_${test}_results.txt<br>     rm -f $tlog<br>     maxres=0<br>     for run in `eval echo {1..$runs}` ; do<br>@@ -58,10 +42,10 @@ for test in "${ARRAY_TESTS[@]}"; do<br>         sysbench $test $opts cleanup >sysbench_output.txt<br>         sysbench $test $opts prepare >>sysbench_output.txt</div><div> </div><div>-        numactl $numaconf sysbench $test $opts \<br>+        $numaconf sysbench $test $opts \<br>             --time=${TIME} --warmup-time=${WARMUP_TIME} run >>sysbench_output.txt</div><div> </div><div>-        numactl $numaconf sysbench $test $opts cleanup >>sysbench_output.txt<br>+        $numaconf sysbench $test $opts cleanup >>sysbench_output.txt</div><div> </div><div>         cat sysbench_output.txt | grep -e 'transactions:' | grep -oP '\(\K\S*' | tee $tlog<br>         tres=`cat $tlog | sed 's#^.*:##g' | sed 's#\..*$##g'`<br>@@ -69,16 +53,22 @@ for test in "${ARRAY_TESTS[@]}"; do<br>         if [[ $tres -gt $maxres ]]; then maxres=$tres ; fi<br>     done<br>     res=$(($res/$runs))<br>-    echo "${test}: $res" >>sysbench_result.txt<br>+    echo "${test}: $res" >>Sysbench_result.txt</div><div> </div><div>     echo "Subtest '$test' results:"<br>     echo "==============================="<br>     echo "Average result: $res"<br>     echo "Maximum result: $maxres"<br>-    printf "Diviations (AVG -> MAX): %.2f" `bc <<< "scale = 4; (1 - $res / $maxres) * 100"` ; echo %<br>+    printf "Deviations (AVG -> MAX): %.2f" `bc <<< "scale = 4; (1 - $res / $maxres) * 100"` ; echo %<br> done</div><div> </div><div>+echo ${TAR_VER} | tee Sysbench_t_version.txt<br>+<br>+echo "Tarantool TAG:"<br>+cat Sysbench_t_version.txt<br> echo "Overall results:"<br> echo "================"<br>-cat sysbench_result.txt<br>-<br>+cat Sysbench_result.txt<br>+echo " "<br>+echo "Publish data to bench database"<br>+/opt/bench-run/benchs/publication/publish.py<br>diff --git a/benchs/tpcc/run.sh b/benchs/tpcc/run.sh<br>index f1f60cc..fca7939 100755<br>--- a/benchs/tpcc/run.sh<br>+++ b/benchs/tpcc/run.sh<br>@@ -1,22 +1,20 @@<br> #!/usr/bin/env bash<br>+set -eu<br>+set -o pipefail</div><div> </div><div> TAR_VER=$(tarantool -v | grep -e "Tarantool" |  grep -oP '\s\K\S*')<br>-echo ${TAR_VER} | tee tpcc_t_version.txt<br>-<br>-set -e<br>+numaopts="numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11"<br>+base_dir=$(pwd)</div><div> </div><div>-if [ ! -n "${TIME}" ]; then TIME=1200; fi<br>-if [ ! -n "${WARMUP_TIME}" ]; then WARMUP_TIME=10; fi<br>-<br>-set -o pipefail<br>+TIME=1200<br>+WARMUP_TIME=10</div><div> </div><div> killall tarantool tpcc_load 2>/dev/null || true<br>-rm -rf 0*.xlog 0*.snap<br>-sync<br>+sync && echo "sync passed" || echo "sync failed with error" $?<br> echo 3 > /proc/sys/vm/drop_caches</div><div> </div><div> sed 's#box.sql#box#g' -i /opt/tpcc/create_table.lua<br>-numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11 tarantool /opt/tpcc/create_table.lua &<br>+$numaopts tarantool /opt/tpcc/create_table.lua &<br> sleep 5</div><div> </div><div> # Usage: tpcc_load -h server_host -P port -d database_name -u mysql_user<br>@@ -27,13 +25,21 @@ tpcc_opts="-h localhost -P 3301 -d tarantool -u root -p '' -w 15"<br> cd /opt/tpcc<br> . /opt/tpcc/load.sh tarantool 15</div><div> </div><div>-numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11 \<br>-    /opt/tpcc/tpcc_start $tpcc_opts -r10 -l${TIME} -i${TIME} >tpcc_output.txt 2>/dev/null<br>-<br>-echo -n "tpcc:" | tee tpcc_result.txt<br>-cat tpcc_output.txt | grep -e '<TpmC>' | grep -oP '\K[0-9.]*' | tee -a tpcc_result.txt<br>+$numaopts /opt/tpcc/tpcc_start $tpcc_opts -r10 -l${TIME} -i${TIME} >tpcc_output.txt 2>/dev/null</div><div> </div><div>+echo -n "tpcc:" | tee tpc.c_result.txt<br>+cat tpcc_output.txt | grep -e '<TpmC>' | grep -oP '\K[0-9.]*' | tee -a tpc.c_result.txt<br> cat tpcc_output.txt<br>+<br>+echo ${TAR_VER} | tee tpc.c_t_version.txt<br>+cp -f tpc.c_t_version.txt $base_dir<br>+cp -f tpc.c_result.txt $base_dir<br>+<br>+echo "Tarantool TAG:"<br>+cat tpc.c_t_version.txt<br> echo "Overall result:"<br> echo "==============="<br>-cat tpcc_result.txt<br>+cat tpc.c_result.txt<br>+echo " "<br>+echo "Publish data to bench database"<br>+/opt/bench-run/benchs/publication/publish.py<br>diff --git a/benchs/ycsb/run.sh b/benchs/ycsb/run.sh<br>index 5ae1c75..e5219a1 100755<br>--- a/benchs/ycsb/run.sh<br>+++ b/benchs/ycsb/run.sh<br>@@ -1,23 +1,18 @@<br> #!/usr/bin/env bash</div><div> </div><div>+set -eu<br>+set -o pipefail<br>+<br> mode=$1<br>-runs=$2<br>+runs=1</div><div> </div><div> if [ "$mode" == "" ]; then<br>     mode=hash<br> fi</div><div> </div><div>-if [ "$runs" == "" ]; then<br>-    runs=1<br>-fi<br>-<br>-kill `pidof tarantool`<br>-<br>-set -e<br>-set -o pipefail<br>-<br> TAR_VER=$(tarantool -v | grep -e "Tarantool" |  grep -oP '\s\K\S*')<br>-echo ${TAR_VER} | tee ycsb_t_version.txt<br>+numaopts="numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11"<br>+base_dir=$(pwd)</div><div> </div><div> ws=/opt/ycsb<br> cd $ws<br>@@ -33,7 +28,7 @@ sed 's/listen=.*/listen=3301,\n   memtx_memory = 2000000000,/' -i $srvlua<br> sed 's/logger_nonblock.*//' -i $srvlua<br> sed 's/logger/log/' -i $srvlua<br> sed 's/read,write,execute/create,read,write,execute/' -i $srvlua<br>-numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11 tarantool $srvlua 2>&1 &<br>+$numaopts tarantool $srvlua 2>&1 &</div><div> </div><div> sleep 5</div><div> plogs=$ws/results<br>@@ -45,12 +40,25 @@ for l in a b c d e f ; do<br>         res=$plogs/run${l}_${r}<br>         echo ---------------- ${l}: $r<br>         echo "tarantool.port=3301" >> $ws/workloads/workload${l}<br>-        numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11 bin/ycsb load tarantool -s -P workloads/workload${l} >${res}.load 2>&1 || cat ${res}.load<br>-       sync<br>+        $numaopts bin/ycsb load tarantool -s -P workloads/workload${l} >${res}.load 2>&1 || cat ${res}.load<br>+       sync && echo "sync passed" || echo "sync failed with error" $?<br>        echo 3 > /proc/sys/vm/drop_caches<br>-        numactl --membind=1 --cpunodebind=1 --physcpubind=6,7,8,9,10,11 bin/ycsb run tarantool -s -P workloads/workload${l} >${res}.log 2>&1 || cat ${res}.log<br>+        $numaopts bin/ycsb run tarantool -s -P workloads/workload${l} >${res}.log 2>&1 || cat ${res}.log<br>         grep Thro ${res}.log | awk '{ print "Overall result: "$3 }' | tee ${res}.txt<br>-        sed "s#Overall result#$l $r#g" ${res}.txt >>${plogs}/results.txt<br>+        sed "s#Overall result#$l $r#g" ${res}.txt >>${plogs}/ycsb.${mode}_result.txt<br>     done<br> done<br>-cat ${plogs}/results.txt<br>+<br>+echo ${TAR_VER} | tee ycsb.${mode}_t_version.txt<br>+cp -f ${plogs}/ycsb.${mode}_result.txt .<br>+cp -f ycsb.${mode}_t_version.txt $base_dir<br>+cp -f ycsb.${mode}_result.txt $base_dir<br>+<br>+echo "Tarantool TAG:"<br>+cat ycsb.${mode}_t_version.txt<br>+echo "Overall results:"<br>+echo "================"<br>+cat ycsb.${mode}_result.txt<br>+echo " "<br>+echo "Publish data to bench database"<br>+/opt/bench-run/benchs/publication/publish.py<br>diff --git a/dockerfiles/ubuntu_benchs b/dockerfiles/ubuntu_benchs<br>index fd9acb4..947f082 100644<br>--- a/dockerfiles/ubuntu_benchs<br>+++ b/dockerfiles/ubuntu_benchs<br>@@ -73,3 +73,6 @@ RUN luarocks install \</div><div> </div><div> # benchmarks runners<br> RUN git clone https://github.com/tarantool/bench-run.git /opt/bench-run<br>+<br>+# adding python dependency<br>+RUN pip install requests<br>--<br>1.8.3.1</div></div><div> </div></BODY></HTML>