aboutsummaryrefslogtreecommitdiffstats
path: root/plot_ecrts
blob: fd76b2266abc5830cc0ec42987b97a54fd15dc5b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/bin/bash


EPS_FLAG=

while true; do
  case $1 in
      --eps)
	  shift
	  EPS_FLAG="--eps"
	  ;;
    *)
	  break
	  ;;
  esac
done

PLOTTER="plot_scatter $EPS_FLAG --lines "

function get_tmp_file {
    OS=`uname`
    if [ $OS == "Linux" ]
    then
	mktemp
    else # Darwin
	mktemp -t ecrts
    fi
}

function get_val {
    echo "$1" | sed 's/.*=//g'
}

function plot_file {
    SCHED="G-EDF"
    FILE=$1
    NAME=`basename $FILE | sed -e 's/.csv//g'`
    STRIPPED=`get_tmp_file`
    # remove comments for Gnuplot
    egrep -v '^#' $FILE > $STRIPPED
    if [ ! -s $STRIPPED ]
    then
	echo "Skipping $FILE since there wasn't any data to be found. "
	return
    fi
    # decode file name
    PARAMS=
    for KV in `echo $NAME | sed -e 's/_/ /g'`
    do
	case $KV in
	    pedf)
		SCHED="P-EDF"
		;;
	    gedf)
		SCHED="G-EDF"
		;;
	    hard)
		TEST="hard"
		;;
	    soft)
		TEST="soft"
		;;
	    axis*)
		AXIS=`get_val $KV`
		;;
	    rmax*|rmin*|wmax*|wmin*)
		# ignored, not shown
		;;
	    *)
		PARAMS="$PARAMS $KV"
		;;
	esac
    done
    YRANGE=" --yrange -0.05 1.05  --yticks 0 0.1"
    case $AXIS in
	ucap)
	    XRANGE="--xrange 0.5 32.5 --xticks 0 2"		
	    XRANGE="--xrange 0.5 22.5 --xticks 0 2"		
	    if [ "$SCHED" == "G-EDF" ] && [ "$TEST" == "hard" ]
	    then
		XRANGE="--xrange 0.5 14.5 --xticks 0 1"
	    fi
	    AXIS_LABEL="task set utilization (prior to inflation)"
	    ;;
	res)
	    XRANGE="--xrange 0 5.05 --xticks 0 1"
	    AXIS_LABEL="average number of resources per task"
	    ;;
	nest)
	    XRANGE="--xrange 0 0.505 --xticks 0 0.1"
	    AXIS_LABEL="probability of nested requests"
	    ;;
	contention)
	    XRANGE="--xrange 45 555 --xticks 0 50"
	    AXIS_LABEL="requests per resource per second"
	    ;;
	wratio)
	    XRANGE="--xrange 0 0.505 --xticks 0 0.1"
	    AXIS_LABEL="ratio of write requests"
	    ;;
	*)
	    echo "Unkown axis: $AXIS."
	    AXIS_LABEL="$AXIS"
	    ;;
    esac
    TITLE="$TEST schedulability under $SCHED with$PARAMS"
    RANGE="$XRANGE $YRANGE"
    $PLOTTER $RANGE "$NAME" "$AXIS_LABEL" "ratio of schedulable task sets" "$TITLE" \
	$STRIPPED 1 2 "task-fair mutex" \
	$STRIPPED 1 3 "task-fair RW" \
	$STRIPPED 1 4 "phase-fair RW"
    rm $STRIPPED
}


while [ ! -z "$1" ]
do
    echo "Plotting $1..."
    plot_file $1
    shift
done