10dc076565f772bb1953209fb69ea150b494aaa40robbiew#! /bin/sh 20dc076565f772bb1953209fb69ea150b494aaa40robbiew# 30dc076565f772bb1953209fb69ea150b494aaa40robbiew# (C) 2002-2003 Intel Corporation 40dc076565f772bb1953209fb69ea150b494aaa40robbiew# I�aky P�rez-Gonz�lez <inaky.perez-gonzalez@intel.com> 50dc076565f772bb1953209fb69ea150b494aaa40robbiew# 60dc076565f772bb1953209fb69ea150b494aaa40robbiew# Distributed under the FSF's GNU Public License v2 or later. 70dc076565f772bb1953209fb69ea150b494aaa40robbiew# 80dc076565f772bb1953209fb69ea150b494aaa40robbiew# Plot the output of priority inheritance tests. 90dc076565f772bb1953209fb69ea150b494aaa40robbiew 100dc076565f772bb1953209fb69ea150b494aaa40robbiew# Modifs by Sebastien Decugis: 110dc076565f772bb1953209fb69ea150b494aaa40robbiew# -> plots linespoints instead of dots 120dc076565f772bb1953209fb69ea150b494aaa40robbiew# -> legend is outside the graph. 130dc076565f772bb1953209fb69ea150b494aaa40robbiew# -> Change axis names and graph title 140dc076565f772bb1953209fb69ea150b494aaa40robbiew 150dc076565f772bb1953209fb69ea150b494aaa40robbiewFILE=$1 160dc076565f772bb1953209fb69ea150b494aaa40robbiewTMP=$(mktemp -d) 170dc076565f772bb1953209fb69ea150b494aaa40robbiew 180dc076565f772bb1953209fb69ea150b494aaa40robbiewfunction clean_up 190dc076565f772bb1953209fb69ea150b494aaa40robbiew{ 200dc076565f772bb1953209fb69ea150b494aaa40robbiew rm -rf $TMP 210dc076565f772bb1953209fb69ea150b494aaa40robbiew} 220dc076565f772bb1953209fb69ea150b494aaa40robbiew 230dc076565f772bb1953209fb69ea150b494aaa40robbiewfunction error 240dc076565f772bb1953209fb69ea150b494aaa40robbiew{ 250dc076565f772bb1953209fb69ea150b494aaa40robbiew cat 1>&2 260dc076565f772bb1953209fb69ea150b494aaa40robbiew clean_up 270dc076565f772bb1953209fb69ea150b494aaa40robbiew exit 1 280dc076565f772bb1953209fb69ea150b494aaa40robbiew} 290dc076565f772bb1953209fb69ea150b494aaa40robbiew 300dc076565f772bb1953209fb69ea150b494aaa40robbiewtrap clean_up EXIT 310dc076565f772bb1953209fb69ea150b494aaa40robbiew 320dc076565f772bb1953209fb69ea150b494aaa40robbiewif ! cols=$(grep "#[ ]*COLUMNS" $FILE) 330dc076565f772bb1953209fb69ea150b494aaa40robbiewthen 340dc076565f772bb1953209fb69ea150b494aaa40robbiew error <<EOF 350dc076565f772bb1953209fb69ea150b494aaa40robbiewE: $FILE: Cannot locate the COLUMNS descriptor 360dc076565f772bb1953209fb69ea150b494aaa40robbiewEOF 370dc076565f772bb1953209fb69ea150b494aaa40robbiewfi 380dc076565f772bb1953209fb69ea150b494aaa40robbiewcols=$(echo $cols | sed 's/#//') 390dc076565f772bb1953209fb69ea150b494aaa40robbiewcolumns=$(echo $cols | awk '{print $2;}') 400dc076565f772bb1953209fb69ea150b494aaa40robbiewcount=1 410dc076565f772bb1953209fb69ea150b494aaa40robbiewwhile [ $count -le $columns ] 420dc076565f772bb1953209fb69ea150b494aaa40robbiewdo 430dc076565f772bb1953209fb69ea150b494aaa40robbiew column[$count]=$(echo $cols | awk -vcount=$count '{print $(2 + count);}') 440dc076565f772bb1953209fb69ea150b494aaa40robbiew if [ -z "${column[$count]}" ] 450dc076565f772bb1953209fb69ea150b494aaa40robbiew then 460dc076565f772bb1953209fb69ea150b494aaa40robbiew column[$count]=$count; 470dc076565f772bb1953209fb69ea150b494aaa40robbiew fi 480dc076565f772bb1953209fb69ea150b494aaa40robbiew count=$(($count + 1)) 490dc076565f772bb1953209fb69ea150b494aaa40robbiewdone 500dc076565f772bb1953209fb69ea150b494aaa40robbiew 510dc076565f772bb1953209fb69ea150b494aaa40robbiew# Set up the plot area 520dc076565f772bb1953209fb69ea150b494aaa40robbiewcount=2 530dc076565f772bb1953209fb69ea150b494aaa40robbiewwith="with linespoints" 540dc076565f772bb1953209fb69ea150b494aaa40robbiewcat > $TMP/gnuplot.script <<EOF 550dc076565f772bb1953209fb69ea150b494aaa40robbiewset term png 560dc076565f772bb1953209fb69ea150b494aaa40robbiewset output "scalable.png" 570dc076565f772bb1953209fb69ea150b494aaa40robbiewset xlabel "${column[1]}" 580dc076565f772bb1953209fb69ea150b494aaa40robbiewset ylabel "Duration (s)" 590dc076565f772bb1953209fb69ea150b494aaa40robbiewset key below 600dc076565f772bb1953209fb69ea150b494aaa40robbiewset title "pthread_create scalability" 610dc076565f772bb1953209fb69ea150b494aaa40robbiewEOF 620dc076565f772bb1953209fb69ea150b494aaa40robbiew 630dc076565f772bb1953209fb69ea150b494aaa40robbiew# Plot the events 640dc076565f772bb1953209fb69ea150b494aaa40robbiewheight=15 650dc076565f772bb1953209fb69ea150b494aaa40robbiewgrep "#[ ]*EVENT" $FILE | sed 's/#//' > $TMP/events 660dc076565f772bb1953209fb69ea150b494aaa40robbiewevents=$(cat $TMP/events | wc -l) 670dc076565f772bb1953209fb69ea150b494aaa40robbiewif [ $events -gt 0 ] 680dc076565f772bb1953209fb69ea150b494aaa40robbiewthen 690dc076565f772bb1953209fb69ea150b494aaa40robbiew step=$(((100 - $height) / $events)) 700dc076565f772bb1953209fb69ea150b494aaa40robbiew if [ $step -lt 5 ] 710dc076565f772bb1953209fb69ea150b494aaa40robbiew then 720dc076565f772bb1953209fb69ea150b494aaa40robbiew step=5; 730dc076565f772bb1953209fb69ea150b494aaa40robbiew fi 740dc076565f772bb1953209fb69ea150b494aaa40robbiew cat $TMP/events | while read event x text 750dc076565f772bb1953209fb69ea150b494aaa40robbiew do 760dc076565f772bb1953209fb69ea150b494aaa40robbiew if ! [ $event = "EVENT" ] 770dc076565f772bb1953209fb69ea150b494aaa40robbiew then 780dc076565f772bb1953209fb69ea150b494aaa40robbiew cat 1>&2 <<EOF 790dc076565f772bb1953209fb69ea150b494aaa40robbiewE: Unknown event type "$event", ignoring 800dc076565f772bb1953209fb69ea150b494aaa40robbiewEOF 810dc076565f772bb1953209fb69ea150b494aaa40robbiew continue; 820dc076565f772bb1953209fb69ea150b494aaa40robbiew fi 830dc076565f772bb1953209fb69ea150b494aaa40robbiew height_text=$(($height + 2)) 840dc076565f772bb1953209fb69ea150b494aaa40robbiew echo "set arrow from $x, graph 0 to $x, graph 0.$height" >> $TMP/gnuplot.script 850dc076565f772bb1953209fb69ea150b494aaa40robbiew echo "set label \"$text\" at $x, graph 0.$height_text center" >> $TMP/gnuplot.script 860dc076565f772bb1953209fb69ea150b494aaa40robbiew height=$(($height + $step)) 870dc076565f772bb1953209fb69ea150b494aaa40robbiew done 880dc076565f772bb1953209fb69ea150b494aaa40robbiewfi 890dc076565f772bb1953209fb69ea150b494aaa40robbiew 900dc076565f772bb1953209fb69ea150b494aaa40robbiew# Plot the data 910dc076565f772bb1953209fb69ea150b494aaa40robbiewplot_cmd="plot '$FILE' using 1:2 title \"${column[$count]}\" $with" 920dc076565f772bb1953209fb69ea150b494aaa40robbiewcount=3 930dc076565f772bb1953209fb69ea150b494aaa40robbiewwhile [ $count -le $columns ] 940dc076565f772bb1953209fb69ea150b494aaa40robbiewdo 950dc076565f772bb1953209fb69ea150b494aaa40robbiew plot_cmd=$plot_cmd",'$FILE' using 1:$count title \"${column[$count]}\" $with" 960dc076565f772bb1953209fb69ea150b494aaa40robbiew count=$(($count + 1)) 970dc076565f772bb1953209fb69ea150b494aaa40robbiewdone 980dc076565f772bb1953209fb69ea150b494aaa40robbiew 990dc076565f772bb1953209fb69ea150b494aaa40robbiewecho $plot_cmd >> $TMP/gnuplot.script 1000dc076565f772bb1953209fb69ea150b494aaa40robbiew 1010dc076565f772bb1953209fb69ea150b494aaa40robbiew#cp $TMP/gnuplot.script . 1020dc076565f772bb1953209fb69ea150b494aaa40robbiew( cat $TMP/gnuplot.script; cat ) | gnuplot 1030dc076565f772bb1953209fb69ea150b494aaa40robbiewrm -rf $TMP 104