diff options
Diffstat (limited to 'tools/performance_test')
-rwxr-xr-x | tools/performance_test/performance_test.sh | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/tools/performance_test/performance_test.sh b/tools/performance_test/performance_test.sh index eb6d45d..984d6b4 100755 --- a/tools/performance_test/performance_test.sh +++ b/tools/performance_test/performance_test.sh @@ -73,18 +73,51 @@ time_elapsed=0 # log ram and cpu usage of process function logData { + # returns the (zero-indexed) position of $word in $line. + # returns -1 if $word isn't contained in $line. + function get_position + { + word="$1" + line=($2) + + count=0 + for w in "${line[@]}" + do + if [ "$w" == "$word" ] + then + echo "$count" + return + fi + + count=$(($count+1)) + done + + echo "-1" + } + pid=$1 - top_output="$(top -b -n 1 -p $pid | grep "^[ ]*$pid")" - top_arr=($top_output) + top_output_labels="$(top -b -n 1 -p $pid | grep "^[ ]*PID")" + top_output_values="$(top -b -n 1 -p $pid | grep "^[ ]*$pid")" + top_arr=($top_output_values) + + cpu_pos=$(get_position "%CPU" "$top_output_labels") + ram_pos=$(get_position "%MEM" "$top_output_labels") + + if [ "$cpu_pos" == "-1" ] || [ "$ram_pos" == "-1" ] + then + echo "The top output doesn't look like expected." + echo "Exiting..." + exit + fi - cpu_usage="${top_arr[6]}" - ram_usage="${top_arr[7]}" + cpu_usage="${top_arr[$cpu_pos]}" + ram_usage="${top_arr[$ram_pos]}" cpu_data="${cpu_data}${time_elapsed} ${cpu_usage}\n" ram_data="${ram_data}${time_elapsed} ${ram_usage}\n" - avg_cpu_usage_candidate="$(ps -p $pid -o %cpu | grep "^[ ]*[0-9]*\.[0-9]*")" + avg_cpu_usage_candidate="$(ps -p $pid -o %cpu | grep "^[ ]*[0-9][0-9]*")" # to make sure the process was still running when we executed the last command if [ avg_cpu_usage_candidate != "" ]; then avg_cpu_usage=$avg_cpu_usage_candidate; fi |