#/bin/bash

#set -x
#use with the steps:
#1)tar zxvf sysbench-0.4.10.tar.gz
#2)cd sysbench-0.4.10/
#3)./configure --without-mysql && make && make install
#4)cd {Script_DIR} 
#5)sh sysbench-threads.sh 2> &1 | tee sysbench-log.txt


echo -e "\n======== HardWare Info ========\n"

system_info=`uname -a`
hardinfo_arch=`uname -i`
cpu_mode_name=`cat /proc/cpuinfo | grep "model name" | awk '{print $4" "$5" "$6" "$7" " $8" "$9" "$10" "$11}'`
cpunums=`cat /proc/cpuinfo | grep processor | wc -l`
mem_total=`cat /proc/meminfo | grep MemTotal | awk '{print $2$3}'`

echo "Arch	:${hardinfo_arch}"
if [ ${cpunums} -eq 1 ];then

	cpu_mode_name=`cat /proc/cpuinfo | grep "model name" | awk '{print $4" "$5" "$6" "$7" " $8" "$9" "$10" "$11}'`

else
	cpu_vendor=`cat /proc/cpuinfo | grep "vendor" | awk '{if(NR==1) print $3}'`	
	cpu_family=`cat /proc/cpuinfo | grep "family" | awk '{if(NR==1) print $3}'`
	cpu_hz=`cat /proc/cpuinfo | grep "cpu MHz" | awk '{if(NR==1) print $4}'`
	cpu_mode_name=$cpu_vendor" "$cpu_family" "$cpu_hz" MHz"
fi

echo "CPU	:${cpunums}cpu; ${cpu_mode_name}"
echo "MEM	:${mem_total}"

echo "show hard interface infos:"
lspci  -nn


echo -e "\n======== SoftWare Info ========\n"

RHEL_release=`cat /etc/redhat-release`
kernel_release=`uname -r`
dump_version=`rpm -q dump`

echo "RHEL	:${RHEL_release}"
echo "kernel	:${kernel_release}"
echo "dump	:${dump_version}"


scheduler_algorithm="cfq noop anticipatory deadline "
#scheduler_algorithm="cfq"

i=0
test_total=4


sysbench_test()
{
	total_size=$1
	nums_threads=$2

	echo -e "======TESTing sysbench-0.4.10======\n"

	for scheduler in  $scheduler_algorithm
	do
		echo -e "======TEST BEGIN WITH:$scheduler======\n"
		echo "$scheduler" > /sys/block/sda/queue/scheduler

		echo -e "====equential read:"
		echo -e "=prepapre file:"
		echo "exec:sysbench --test=fileio --num-threads=$nums_threads  
				--file-total-size=$total_size --file-test-mode=seqrd prepare"

		sysbench --test=fileio --num-threads=$nums_threads  --file-total-size=$total_size --file-test-mode=seqrd prepare

		echo "exec:sysbench --test=fileio --num-threads=$nums_threads  
				--file-total-size=$total_size --file-test-mode=seqrd run"
	
		test_num=0
		while [ $test_num -lt $test_total ]
		do

			echo 3 > /proc/sys/vm/drop_caches

		 	sysbench --test=fileio --num-threads=$nums_threads  --file-total-size=$total_size --file-test-mode=seqrd run

			test_num=$((test_num+1))
		done
		
		sysbench --test=fileio --num-threads=$nums_threads 	--file-total-size=$total_size --file-test-mode=seqrd cleanup

	done 
}


echo -e "\n======== Main Test ========\n"

tst_total_size=1G

tst_threads_num=1
sysbench_test $tst_total_size $tst_threads_num

tst_threads_num=3
sysbench_test $tst_total_size $tst_threads_num

tst_threads_num=5
sysbench_test $tst_total_size $tst_threads_num


echo -e "\n======== Test Complete ========\n"



