#!/bin/sh
. /root/qaset/config
. /usr/share/qa/qaset/libs/common.sh

NUMCPUS=`grep -c processor /proc/cpuinfo`
#run test
WORKLOAD_NAME="process_scheduler_cfs_hackbench_pipes_threads"    # case
WORKLOAD_LOG_NAME="qa_test_hackbench"      # suite
BENCHMARK_SCRIPT="/usr/bin/hackbench"

HACKBENCH_MIN_GROUPS=1
HACKBENCH_MAX_GROUPS=$((NUMCPUS*4))
if [[ `uname -m` =~ i.86 ]]; then
        export HACKBENCH_MAX_GROUPS=128
fi
if [ $HACKBENCH_MAX_GROUPS -gt 296 ]; then
        export HACKBENCH_MAX_GROUPS=296
fi

ulimit -n 65534

THREADS=
START_THREAD=$HACKBENCH_MIN_GROUPS
END_THREAD=$HACKBENCH_MAX_GROUPS
if [ $END_THREAD -gt 32 ]; then
        THREADS=`seq $START_THREAD 3 8`
        THREADS="$THREADS `seq 12 9 32`"
        THREADS="$THREADS `seq 48 31 $END_THREAD`"
elif [ $END_THREAD -gt 8 ]; then
        THREADS=`seq $START_THREAD 2 8`
        THREADS="$THREADS `seq 12 6 $END_THREAD`"
else
        THREADS=`seq $START_THREAD 2 $END_THREAD`
fi

if [ `echo $THREADS | awk '{print $NF}'` -ne $END_THREAD ]; then
        THREADS="$THREADS $END_THREAD"
fi

for NR_THREADS in $THREADS; do
	if [ $NR_THREADS -lt $HACKBENCH_MIN_GROUPS ]; then
		continue
	fi
        BENCHMARK_SCRIPT_OPTIONS=" -l 20000 -g $NR_THREADS -T"
        sq_benchmark_run ${WORKLOAD_NAME} ${WORKLOAD_LOG_NAME} ${BENCHMARK_SCRIPT} ${BENCHMARK_SCRIPT_OPTIONS}
done

