summary refs log tree commit diff
path: root/playgrounds/fio/runner.sh
diff options
context:
space:
mode:
authorFranck Cuny <fcuny@twitter.com>2018-11-23 09:27:06 -0800
committerFranck Cuny <fcuny@twitter.com>2018-11-23 09:27:06 -0800
commit4492c5cfbe0e99666afed6780b674beaa670d1a1 (patch)
tree0b60557a2640f364ddeef4cbca9d72b2358e618b /playgrounds/fio/runner.sh
parent[tmux] Small change to binding + fix terminal (diff)
downloademacs.d-4492c5cfbe0e99666afed6780b674beaa670d1a1.tar.gz
[bash] Let's try to use emacs tty
Diffstat (limited to '')
-rwxr-xr-xplaygrounds/fio/runner.sh60
1 files changed, 60 insertions, 0 deletions
diff --git a/playgrounds/fio/runner.sh b/playgrounds/fio/runner.sh
new file mode 100755
index 0000000..8df8895
--- /dev/null
+++ b/playgrounds/fio/runner.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+## Helper script to run fio tests and generate reports
+
+DATA_DIR=./data
+LOG_DIR=./logs
+REPORT_DIR=./reports
+
+FIO_BIN=./usr/bin/fio
+if [ "${2}x" != "x" ]; then
+  FIO_BIN=${2}
+fi
+
+FIOS_LIST=$(ls *.fio)
+NOW_EPOCH=$(date +"%s")
+LOG_DIR_READS=${LOG_DIR}/reads
+LOG_DIR_WRITES=${LOG_DIR}/writes
+
+# create required directories
+mkdir -p ${DATA_DIR}
+
+if [ -d "${REPORT_DIR}" ]; then
+  echo "Report directory exists, archiving using current timestamp: ${NOW_EPOCH}"
+  mv ${REPORT_DIR} ${REPORT_DIR}_${NOW_EPOCH}
+fi
+mkdir -p ${REPORT_DIR}
+
+if [ -d "${LOG_DIR}" ]; then
+  echo "Log directory exists, archiving using current timestamp: ${NOW_EPOCH}"
+  mv ${LOG_DIR} ${LOG_DIR}_${NOW_EPOCH}
+fi
+mkdir -p ${LOG_DIR_WRITES}
+mkdir -p ${LOG_DIR_READS}
+
+# run all fios in sequential order
+for i in $(echo ${FIOS_LIST} | tr " " "\n")
+do
+  echo -e "\nStarting fio test ${i}..."
+  ${FIO_BIN} ./${i} --output ${REPORT_DIR}/${i}.out
+
+  mv *read*.log ${LOG_DIR_READS}/
+  mv *write*.log ${LOG_DIR_WRITES}/
+
+  rm -f data/*   # delete created fio files after each run
+
+  echo "Completed fio test ${i}."
+done
+
+# plot reports to svg
+FIO_PLOT_BIN=./usr/bin/fio_generate_plots
+if type "${FIO_PLOT_BIN}" > /dev/null && type "gnuplot" > /dev/null; then
+
+  echo "fio_generate_plots is installed generating svg reports based on fio logs"
+
+  ( cd ${LOG_DIR_READS} && for f in *.log; do mv $f ${f/.[1-3]/}; done && ${FIO_PLOT_BIN} "All-Reads" )
+  ( cd ${LOG_DIR_WRITES} && for f in *.log; do mv $f ${f/.[1-3]/}; done && ${FIO_PLOT_BIN} "All-Writes" )
+
+  mv ${LOG_DIR_READS}/*.svg ${REPORT_DIR}/
+  mv ${LOG_DIR_WRITES}/*.svg ${REPORT_DIR}/
+fi