refarctor benchmark
This commit is contained in:
		@@ -1,7 +1,4 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
#Requirements:
 | 
					 | 
				
			||||||
#<function name without dashes>.wrk descriptor file for wrk
 | 
					 | 
				
			||||||
#<function name without dashes>.body (even if you don't need it)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#Configuration variables
 | 
					#Configuration variables
 | 
				
			||||||
functions=(isprime-kubeless-go-sc)
 | 
					functions=(isprime-kubeless-go-sc)
 | 
				
			||||||
@@ -11,19 +8,12 @@ kuberhost="node1:31299"
 | 
				
			|||||||
maxthreads=40
 | 
					maxthreads=40
 | 
				
			||||||
kubeless=true
 | 
					kubeless=true
 | 
				
			||||||
rps=500
 | 
					rps=500
 | 
				
			||||||
#Wave mode configuration
 | 
					 | 
				
			||||||
wave_connection=40
 | 
					 | 
				
			||||||
wave_max_conn=160
 | 
					 | 
				
			||||||
wave_min_conn=40
 | 
					 | 
				
			||||||
wave_time="30s"
 | 
					 | 
				
			||||||
wave_loop_max=2
 | 
					 | 
				
			||||||
#Climb mode configuration
 | 
					#Climb mode configuration
 | 
				
			||||||
climb_max=10
 | 
					climb_max=10
 | 
				
			||||||
climb=1
 | 
					climb=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HEY_INSTALLED=$(command -v hey)
 | 
					HEY_INSTALLED=$(command -v hey)
 | 
				
			||||||
if [[ $HEY_INSTALLED = "" ]]
 | 
					if [[ $HEY_INSTALLED == "" ]]; then
 | 
				
			||||||
then
 | 
					 | 
				
			||||||
    apt update
 | 
					    apt update
 | 
				
			||||||
    apt install -y golang
 | 
					    apt install -y golang
 | 
				
			||||||
    go get -u github.com/rakyll/hey
 | 
					    go get -u github.com/rakyll/hey
 | 
				
			||||||
@@ -31,154 +21,93 @@ then
 | 
				
			|||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LOADTEST_INSTALLED=$(command -v loadtest)
 | 
					LOADTEST_INSTALLED=$(command -v loadtest)
 | 
				
			||||||
if [[ LOADTEST_INSTALLED = "" ]]
 | 
					if [[ LOADTEST_INSTALLED == "" ]]; then
 | 
				
			||||||
then
 | 
					 | 
				
			||||||
    apt update
 | 
					    apt update
 | 
				
			||||||
    apt install -y nodejs npm
 | 
					    apt install -y nodejs npm
 | 
				
			||||||
    npm i -g loadtest
 | 
					    npm i -g loadtest
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo -e "Benchmarking functions\n"
 | 
					echo -e "Benchmarking functions\n"
 | 
				
			||||||
for function in "${functions[@]}"
 | 
					for function in "${functions[@]}"; do
 | 
				
			||||||
do
 | 
					 | 
				
			||||||
    function_friendly=$(echo $function | cut - -d'-' -f1)
 | 
					    function_friendly=$(echo $function | cut - -d'-' -f1)
 | 
				
			||||||
    echo -e "Benchmarking $function\n"
 | 
					    echo -e "Benchmarking $function\n"
 | 
				
			||||||
    echo -e "Output of $function is:\n"
 | 
					    echo -e "Output of $function is:\n"
 | 
				
			||||||
    perl -pi -e 'chomp if eof' "$function_friendly".body
 | 
					    perl -pi -e 'chomp if eof' "$function_friendly".body
 | 
				
			||||||
    if $kubeless;
 | 
					    if $kubeless; then
 | 
				
			||||||
    then
 | 
					 | 
				
			||||||
        curl --data-binary @"$function_friendly".body --header "Host: $function.kubeless" --header "Content-Type:application/json" http://$kuberhost/"$function"
 | 
					        curl --data-binary @"$function_friendly".body --header "Host: $function.kubeless" --header "Content-Type:application/json" http://$kuberhost/"$function"
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        curl --header "Host: $function.default.example.com" http://$kuberhost/
 | 
					        curl --header "Host: $function.default.example.com" http://$kuberhost/
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    echo -e "\n"
 | 
					    echo -e "\n"
 | 
				
			||||||
    if [[ $* = *"--wave"* ]]
 | 
					    for connection in "${connections[@]}"; do
 | 
				
			||||||
    then
 | 
					        if [[ $connection -lt $((maxthreads + 1)) ]]; then
 | 
				
			||||||
        wave_loop=1
 | 
					            threads=$((connection - 1))
 | 
				
			||||||
        wave_dir_up=true
 | 
					 | 
				
			||||||
        wave_num=1
 | 
					 | 
				
			||||||
        while [[ $wave_loop -lt $wave_loop_max ]]; do
 | 
					 | 
				
			||||||
                now=$(date '+%Y-%m-%d-%H-%M')
 | 
					 | 
				
			||||||
                echo -e "Connections: $wave_connection"
 | 
					 | 
				
			||||||
                echo -e "Running"
 | 
					 | 
				
			||||||
                if $kubeless;
 | 
					 | 
				
			||||||
                then
 | 
					 | 
				
			||||||
                    hey -c $wave_connection -q $rps -z $wave_time -m POST -o csv -host "$function.kubeless" -D "$function_friendly".body  -T "application/json" http://$kuberhost/"$function" > ./data/"$function"."$wave_num".wave.csv
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                    hey -c $wave_connection -q $rps -z $wave_time -m POST -o csv -host "$function.default.example.com" http://$kuberhost/ > ./data/"$function"."$wave_num".wave.csv
 | 
					 | 
				
			||||||
                fi
 | 
					 | 
				
			||||||
                wave_num=$((wave_num + 1))
 | 
					 | 
				
			||||||
                if $wave_dir_up
 | 
					 | 
				
			||||||
                then
 | 
					 | 
				
			||||||
                        if [[ $wave_connection -lt $wave_max_conn ]]
 | 
					 | 
				
			||||||
                        then
 | 
					 | 
				
			||||||
                            echo -e "Stepping up"
 | 
					 | 
				
			||||||
                            wave_connection=$((wave_connection * 5))
 | 
					 | 
				
			||||||
                        else
 | 
					 | 
				
			||||||
                            echo -e "Not stepping"
 | 
					 | 
				
			||||||
                            wave_dir_up=false
 | 
					 | 
				
			||||||
                        fi
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                    if [[ $wave_connection -gt $wave_min_conn ]]
 | 
					 | 
				
			||||||
                    then
 | 
					 | 
				
			||||||
                        echo -e "Stepping down"
 | 
					 | 
				
			||||||
                        wave_connection=$((wave_connection / 5))
 | 
					 | 
				
			||||||
                    else
 | 
					 | 
				
			||||||
                        echo -e "Not stepping"
 | 
					 | 
				
			||||||
                        wave_dir_up=true
 | 
					 | 
				
			||||||
                        wave_loop=$((wave_loop + 1))
 | 
					 | 
				
			||||||
                    fi
 | 
					 | 
				
			||||||
                fi
 | 
					 | 
				
			||||||
        done
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        for connection in "${connections[@]}"
 | 
					 | 
				
			||||||
        do
 | 
					 | 
				
			||||||
            if [[ $connection -lt $((maxthreads + 1)) ]]
 | 
					 | 
				
			||||||
            then
 | 
					 | 
				
			||||||
                threads=$((connection-1))
 | 
					 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
            threads=$maxthreads
 | 
					            threads=$maxthreads
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        echo -e "Threads: $threads Connections $connection\n"
 | 
					        echo -e "Threads: $threads Connections $connection\n"
 | 
				
			||||||
                for time in "${times[@]}"
 | 
					        for time in "${times[@]}"; do
 | 
				
			||||||
                do
 | 
					 | 
				
			||||||
            datetime=$(date '+%Y-%m-%d-%H-%M-%S')
 | 
					            datetime=$(date '+%Y-%m-%d-%H-%M-%S')
 | 
				
			||||||
            echo -e "Time: $time\n"
 | 
					            echo -e "Time: $time\n"
 | 
				
			||||||
                    if [[ $* = *"--fire"* ]]
 | 
					            if [[ $* == *"--fire"* ]]; then
 | 
				
			||||||
                    then
 | 
					 | 
				
			||||||
                echo -e "hey-summary $datetime\n"
 | 
					                echo -e "hey-summary $datetime\n"
 | 
				
			||||||
                        if $kubeless;
 | 
					                if $kubeless; then
 | 
				
			||||||
                        then
 | 
					                    if [[ $* == *"--loadtest"* ]]; then
 | 
				
			||||||
                            if [[ $* = *"--loadtest"* ]]
 | 
					                        loadtest -H "Host: $function.kubeless" --rps $rps -c $connection -t $time -p "$function_firendly".body http://$kuberhost/"$function" >./data/"$function"."$connection"."$time"."$datetime".txt
 | 
				
			||||||
                            then
 | 
					 | 
				
			||||||
                                loadtest -H "Host: $function.kubeless" --rps $rps -c $connection -t $time -p "$function_firendly".body http://$kuberhost/"$function" > ./data/"$function"."$connection"."$time"."$datetime".txt
 | 
					 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
                                hey -c "$connection" -q $rps -z "$time" -m POST -host "$function.kubeless" -D "$function_firendly".body  -T "application/json" http://$kuberhost/"$function" > ./data/"$function"."$connection"."$time"."$datetime".txt
 | 
					                        hey -c "$connection" -q $rps -z "$time" -m POST -host "$function.kubeless" -D "$function_firendly".body -T "application/json" http://$kuberhost/"$function" >./data/"$function"."$connection"."$time"."$datetime".txt
 | 
				
			||||||
                    fi
 | 
					                    fi
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                        if [[ $* = *"--loadtest"* ]]
 | 
					                    if [[ $* == *"--loadtest"* ]]; then
 | 
				
			||||||
                            then
 | 
					                        loadtest -H "Host: $function.default.example.com" --rps $rps -c $connection -t $time http://$kuberhost/ >./data/"$function"."$connection"."$time"."$datetime".txt
 | 
				
			||||||
                                loadtest -H "Host: $function.default.example.com" --rps $rps -c $connection -t $time http://$kuberhost/ > ./data/"$function"."$connection"."$time"."$datetime".txt
 | 
					 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
                                hey -c "$connection" -q $rps -z "$time" -m POST -host "$function.default.example.com" http://$kuberhost/ > ./data/"$function"."$connection"."$time"."$datetime".txt
 | 
					                        hey -c "$connection" -q $rps -z "$time" -m POST -host "$function.default.example.com" http://$kuberhost/ >./data/"$function"."$connection"."$time"."$datetime".txt
 | 
				
			||||||
                    fi
 | 
					                    fi
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
                    if [[ $* = *"--csv"* ]]
 | 
					            if [[ $* == *"--csv"* ]]; then
 | 
				
			||||||
                    then
 | 
					 | 
				
			||||||
                echo -e "hey-csv $datetime\n"
 | 
					                echo -e "hey-csv $datetime\n"
 | 
				
			||||||
                        if $kubeless;
 | 
					                if $kubeless; then
 | 
				
			||||||
                        then
 | 
					                    hey -c "$connection" -z "$time" -m POST -host "$function.kubeless" -D "$function_firendly".body -T "application/json" http://$kuberhost/"$function" >./data/"$function"."$connection"."$time"."$datetime".csv
 | 
				
			||||||
                            hey -c "$connection" -z "$time" -m POST -host "$function.kubeless" -D "$function_firendly".body  -T "application/json" http://$kuberhost/"$function" > ./data/"$function"."$connection"."$time"."$datetime".csv
 | 
					 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                            hey -c "$connection" -z "$time" -m POST -host "$function.default.example.com" http://$kuberhost/ > ./data/"$function"."$connection"."$time"."$datetime".csv
 | 
					                    hey -c "$connection" -z "$time" -m POST -host "$function.default.example.com" http://$kuberhost/ >./data/"$function"."$connection"."$time"."$datetime".csv
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
                    if [[ $* = *"--for"* ]]
 | 
					            if [[ $* == *"--for"* ]]; then
 | 
				
			||||||
                    then
 | 
					                for num in 1 2 3 4 5 6 7 8 9 10; do
 | 
				
			||||||
                        for num in 1 2 3 4 5 6 7 8 9 10
 | 
					 | 
				
			||||||
                        do
 | 
					 | 
				
			||||||
                    echo -e "hey-for $num\n"
 | 
					                    echo -e "hey-for $num\n"
 | 
				
			||||||
                            if $kubeless;
 | 
					                    if $kubeless; then
 | 
				
			||||||
                            then
 | 
					                        if [[ $* == *"--loadtest"* ]]; then
 | 
				
			||||||
                            if [[ $* = *"--loadtest"* ]]
 | 
					                            loadtest -H "Host: $function.kubeless" --rps $rps -c $connection -t $time -p "$function_firendly".body http://$kuberhost/"$function" >./data/"$function"."$num".txt
 | 
				
			||||||
                            then
 | 
					 | 
				
			||||||
                                loadtest -H "Host: $function.kubeless" --rps $rps -c $connection -t $time -p "$function_firendly".body http://$kuberhost/"$function" > ./data/"$function"."$num".txt
 | 
					 | 
				
			||||||
                        else
 | 
					                        else
 | 
				
			||||||
                                hey -c "$connection" -q $rps -z "$time" -m POST -o csv -host "$function.kubeless" -D "$function_friendly".body  -T "application/json" http://$kuberhost/"$function" > ./data/"$function"."$num".csv
 | 
					                            hey -c "$connection" -q $rps -z "$time" -m POST -o csv -host "$function.kubeless" -D "$function_friendly".body -T "application/json" http://$kuberhost/"$function" >./data/"$function"."$num".csv
 | 
				
			||||||
                        fi
 | 
					                        fi
 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
                            if [[ $* = *"--loadtest"* ]]
 | 
					                        if [[ $* == *"--loadtest"* ]]; then
 | 
				
			||||||
                            then
 | 
					                            loadtest -H "Host: $function.default.example.com" --rps $rps -c $connection -t $time http://$kuberhost/ >./data/"$function"."$num".for.csv
 | 
				
			||||||
                                loadtest -H "Host: $function.default.example.com" --rps $rps -c $connection -t $time http://$kuberhost/ > ./data/"$function"."$num".for.csv
 | 
					 | 
				
			||||||
                        else
 | 
					                        else
 | 
				
			||||||
                                hey -c "$connection" -q $rps -z "$time" -m POST -o csv -host "$function.default.example.com" http://$kuberhost/ > ./data/"$function"."$num".for.csv
 | 
					                            hey -c "$connection" -q $rps -z "$time" -m POST -o csv -host "$function.default.example.com" http://$kuberhost/ >./data/"$function"."$num".for.csv
 | 
				
			||||||
                        fi
 | 
					                        fi
 | 
				
			||||||
                    fi
 | 
					                    fi
 | 
				
			||||||
                done
 | 
					                done
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
    fi
 | 
					    if [[ $* == *"--climb"* ]]; then
 | 
				
			||||||
    if [[ $* = *"--climb"* ]]
 | 
					 | 
				
			||||||
    then
 | 
					 | 
				
			||||||
        while [[ $climb -lt $climb_max ]]; do
 | 
					        while [[ $climb -lt $climb_max ]]; do
 | 
				
			||||||
            climb_rps=$((rps * climb))
 | 
					            climb_rps=$((rps * climb))
 | 
				
			||||||
            echo -e "Connections: $climb_connection"
 | 
					            echo -e "Connections: $climb_connection"
 | 
				
			||||||
                if $kubeless;
 | 
					            if $kubeless; then
 | 
				
			||||||
                then
 | 
					                if [[ $* == *"--loadtest"* ]]; then
 | 
				
			||||||
                if [[ $* = *"--loadtest"* ]]
 | 
					                    loadtest -H "Host: $function.kubeless" --rps $climb_rps -c 1 -t $time -p "$function_firendly".body http://$kuberhost/"$function" >./data/"$function"."$climb_connection".climb.txt
 | 
				
			||||||
                then
 | 
					 | 
				
			||||||
                    loadtest -H "Host: $function.kubeless" --rps $climb_rps -c 1 -t $time -p "$function_firendly".body http://$kuberhost/"$function" > ./data/"$function"."$climb_connection".climb.txt
 | 
					 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                    hey -c 1 -q $climb_rps -z $time -m POST -o csv -host "$function.kubeless" -D "$function_friendly".body  -T "application/json" http://$kuberhost/"$function" > ./data/"$function"."$climb_connection".climb.csv
 | 
					                    hey -c 1 -q $climb_rps -z $time -m POST -o csv -host "$function.kubeless" -D "$function_friendly".body -T "application/json" http://$kuberhost/"$function" >./data/"$function"."$climb_connection".climb.csv
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                if [[ $* = *"--loadtest"* ]]
 | 
					                if [[ $* == *"--loadtest"* ]]; then
 | 
				
			||||||
                then
 | 
					                    loadtest -H "Host: $function.default.example.com" --rps $climb_rps -c 1 -t $time http://$kuberhost/ >./data/"$function"."$climb_connection".climb.txt
 | 
				
			||||||
                    loadtest -H "Host: $function.default.example.com" --rps $climb_rps -c 1 -t $time http://$kuberhost/ > ./data/"$function"."$climb_connection".climb.txt
 | 
					 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                    hey -c 1 -q $climb_rps -z $time -m POST -o csv -host "$function.default.example.com" http://$kuberhost/ > ./data/"$function"."$climb_connection".climb.csv
 | 
					                    hey -c 1 -q $climb_rps -z $time -m POST -o csv -host "$function.default.example.com" http://$kuberhost/ >./data/"$function"."$climb_connection".climb.csv
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
            climb=$((climb + 1))
 | 
					            climb=$((climb + 1))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user