git » nmdb » commit cabc097

Add a small script to aid in automated performance testing.

author Alberto Bertogli
2006-09-15 03:09:00 UTC
committer Alberto Bertogli
2006-09-15 03:09:00 UTC
parent be0e57aa5eb486380fcf8a98a53465702234e677

Add a small script to aid in automated performance testing.

libnmdb/test_functions.sh +80 -0

diff --git a/libnmdb/test_functions.sh b/libnmdb/test_functions.sh
new file mode 100644
index 0000000..d8e5c97
--- /dev/null
+++ b/libnmdb/test_functions.sh
@@ -0,0 +1,80 @@
+#!/bin/bash
+
+# Useful functions for performing automated performance testing.
+
+
+# run test2[c|d] varying KSIZE and VSIZE (which are equal).
+# $1 == "c" or "d" depending on which test2 to run
+# $2 == TIMES to pass to test2
+function var_sizes {
+	if [ "$1" == "" ] && [ "$2" == ""]; then
+		return;
+	fi;
+
+	for i in 8 16 64 128 512 1024 2048 5120 8192 10240 20480 32768; do
+		for j in 1 2 3; do
+			echo $i `./test2$1 $2 $i $i`;
+		done;
+	done;
+}
+
+
+# run test2[c|d] varying TIMES.
+# $1 == "c" or "d" depending on which test2 to run
+# $2 == KSIZE and VSIZE to pass to test2
+function var_times {
+	if [ "$1" == "" ] && [ "$2" == ""]; then
+		return;
+	fi;
+
+	for i in `seq 500 500 30000`; do
+		for j in 1 2 3; do
+			echo $i `./test2$1 $i $2 $2`;
+		done;
+	done;
+}
+
+
+# run test2[c|d] and return the amount of operations per second
+# $1 == "c" or "d" depending on which test2 to run
+# $2 == list of TIMES to use (eg. "1000 2000 5000")
+# $3 == KSIZE and VSIZE
+function ops_per_sec {
+	if [ "$1" == "" ] && [ "$2" == ""] && [ "$3" == ""]; then
+		return;
+	fi;
+
+	for i in $2; do
+		for j in 1 2 3; do
+			OUT=`./test2$1 $i $3 $3`;
+			ST=`echo $OUT | cut -d ' ' -f 1`;
+			GT=`echo $OUT | cut -d ' ' -f 2`;
+			DT=`echo $OUT | cut -d ' ' -f 3`;
+			MS=`echo $OUT | cut -d ' ' -f 4`;
+
+			SO=$[ $ST / $i ];
+			GO=$[ $GT / $i ];
+			DO=$[ $DT / $i ];
+
+			echo $i $SO $GO $DO $MS;
+		done;
+	done;
+}
+
+
+#
+# sample invocations
+#
+# srv:X means the server is running with -c X
+
+# var_sizes c 5000 > var_sizes_c_5000_srv:1
+# var_sizes c 5000 > var_sizes_c_5000_srv:128
+# ops_per_sec c "`seq 2000 1000 10000`" 32 > ops_per_sec_c_32_srv:1
+# ops_per_sec c "`seq 2000 1000 10000`" 32 > ops_per_sec_c_32_srv:128
+# ops_per_sec d "`seq 2000 1000 10000`" 32 > ops_per_sec_d_32_srv:1
+# ops_per_sec d "`seq 2000 1000 10000`" 32 > ops_per_sec_d_32_srv:128
+# var_times c 32 > var_times_c_32_srv:1
+# var_times c 32 > var_times_c_32_srv:16
+# var_times c 32 > var_times_c_32_srv:126
+
+