From 27f3cb0dbeeee5b9964fea650cfa6d0b79ff0d9a Mon Sep 17 00:00:00 2001
From: Fulvio Galeazzi <fulvio.galeazzi@gmail.com>
Date: Wed, 26 Apr 2017 18:55:57 +0200
Subject: [PATCH] 2017-04-26:  FG;  Utilizzato su ba1:r1srv05.

---
 doFioLoopRbd.sh | 29 ++++++++++++-------
 populate.sh     | 77 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 96 insertions(+), 10 deletions(-)
 create mode 100755 populate.sh

diff --git a/doFioLoopRbd.sh b/doFioLoopRbd.sh
index 0370b88..193dd80 100755
--- a/doFioLoopRbd.sh
+++ b/doFioLoopRbd.sh
@@ -1,14 +1,23 @@
 export RUNTIME=200
 export thePause=10
-# for poolname in oscinder-ba oscinder-ba-fast osbackup-ba ssd-ba ; do
-for poolname in oscinder-ba ssd-ba ; do
-  export POOLNAME=${poolname}
-  export RBDNAME=testFio
-  for iodepth in 1 2 32 8 64; do 
+export subDir=$1
+if [ ! -d $PWD/$subDir ]; then
+    echo "La directory $subDir non esiste, esco."
+    exit 1
+elif [ -z $subDir ]; then
+    echo "Manca la directory di destinazione, esco."
+    exit 2
+fi
+
+#  for iodepth in 1 2 32 8 64 128 4 256 16 512 ; do 
+for iodepth in 64 256 128 4 16 ; do 
+  for poolname in test test2 test3; do
+    export POOLNAME=${poolname}
+    export RBDNAME=testFio
     export IODEPTH=${iodepth}
-    for numjobs in 1 4 ; do
+    for numjobs in 1 ; do
 	export NUMJOBS=${numjobs}
-	for blocksize in 4k 4M 64k 1M ; do
+	for blocksize in 4k 64k 1M 4M ; do
  	  export BLOCKSIZE=${blocksize}
 	  for testtype in randwrite randread randrw ; do
  	    export TESTTYPE=${testtype}
@@ -21,10 +30,10 @@ for poolname in oscinder-ba ssd-ba ; do
 	    echo "    TESTTYPE:  $TESTTYPE"
 	    echo " "
 	    export fileSuff=${POOLNAME}_${RBDNAME}_${TESTTYPE}_i${IODEPTH}_n${NUMJOBS}_b${BLOCKSIZE}
-	    cat rbd_fio_template.txt | sed -e "s/POOLNAME/$POOLNAME/" -e "s/RBDNAME/$RBDNAME/" -e "s/IODEPTH/$IODEPTH/" -e "s/NUMJOBS/$NUMJOBS/" -e "s/BLOCKSIZE/$BLOCKSIZE/" -e "s/RUNTIME/$RUNTIME}/" -e "s/TESTTYPE/$TESTTYPE/" > rbd_${fileSuff}.txt
+	    cat rbd_fio_template.txt | sed -e "s/POOLNAME/$POOLNAME/" -e "s/RBDNAME/$RBDNAME/" -e "s/IODEPTH/$IODEPTH/" -e "s/NUMJOBS/$NUMJOBS/" -e "s/BLOCKSIZE/$BLOCKSIZE/" -e "s/RUNTIME/$RUNTIME}/" -e "s/TESTTYPE/$TESTTYPE/" > ${subDir}/rbd_${fileSuff}.txt
 	    sync ; sleep 2
-	    echo "Executing: fio/fio --output=rbd_${fileSuff}.log rbd_${fileSuff}.txt"
-	    ./fio/fio --output=rbd_${fileSuff}.log rbd_${fileSuff}.txt
+	    echo "Executing: fio --output=rbd_${fileSuff}.log rbd_${fileSuff}.txt"
+	    fio --output=${subDir}/rbd_${fileSuff}.log ${subDir}/rbd_${fileSuff}.txt
 	    sync ; echo "done rbd_${fileSuff}.txt" ; sleep $thePause
 	  done
 	done
diff --git a/populate.sh b/populate.sh
new file mode 100755
index 0000000..34f234f
--- /dev/null
+++ b/populate.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+# Created by Ben Okopnik on Wed Jul 16 18:04:33 EDT 2008
+# 
+# Original script at:
+#   http://linuxgazette.net/153/pfeiffer.html
+# Modified for 'dd' according to:
+#   http://rajaseelan.com/2009/07/29/generate-files-with-random-content-and-size-in-bash/
+#
+########    User settings     ############
+MAXDIRS=50
+MAXDEPTH=5
+MAXFILES=5
+# Max Size in kB
+MAXSIZE=4000000
+# Maximum fraction of filesystem to fill
+MAXFRACTION=90
+######## End of user settings ############
+
+export baseDir=$1
+echo "Arg $1 baseDir $baseDir"
+if [ -z "$baseDir" ]; then
+    echo "Need to use as: $0 <initialDir>"
+    echo "  Exiting now"
+    exit 1
+fi
+if [ -d "$baseDir" ]; then
+    echo "About to populate path: $baseDir"
+    cd $baseDir
+else
+    echo "Dir $baseDir does not exist, exiting now"
+    exit 2
+fi
+sleep 5
+
+# How deep in the file system are we now?
+TOP=`pwd|tr -cd '/'|wc -c`
+
+populate() {
+    cd $1
+    curdir=$PWD
+
+    files=$(($RANDOM*$MAXFILES/32767))
+    for n in `seq $files`
+    do
+	f=`mktemp XXXXXX`
+	size=$(($RANDOM*$MAXSIZE/32767))
+#	head -c $size /dev/urandom > $f
+	fracUsed=`df -P -k $baseDir | tail -1 | awk '{print $(NF-1)}' | sed -e 's/%$//'`
+	if [[ $fracUsed -ge $MAXFRACTION ]]; then
+	    echo "Reached requested occupation (${fracUsed}%) so exiting now"
+	    return
+	fi
+	echo "Command (fracUsed=${fracUsed}): dd bs=1K count=$size skip=$RANDOM if=/dev/urandom of=$f "
+	dd bs=1K count=$size skip=$RANDOM if=/dev/urandom of=${curdir}/$f
+	done
+
+    depth=`pwd|tr -cd '/'|wc -c`
+    if [ $(($depth-$TOP)) -ge $MAXDEPTH ]
+	then
+	return
+	fi
+
+    unset dirlist
+    dirs=$(($RANDOM*$MAXDIRS/32767))
+    for n in `seq $dirs`
+    do
+	d=`mktemp -d XXXXXX`
+	dirlist="$dirlist${dirlist:+ }$PWD/$d"
+	done
+
+    for dir in $dirlist
+    do
+	populate "$dir"
+	done
+}
+
+populate $baseDir
-- 
GitLab