summaryrefslogtreecommitdiffstats
path: root/scripts/pm_test_script
blob: c76947b620cd3a1d8b5f7f40e808fdd1f7829e23 (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
#!/bin/bash
#
# pm_test_script:
#	Batch script for running (all?) pm benchmarking experiments.
#	Run it as root!
#
#	Original script by John Calandrino 2008
#	Changes by Andrea Bastoni 2010
#
# Distribution A can be in "PFAIR" "GSN-EDF" "C-EDF" "PSN-EDF";

launchpolluter()
{
	NCPU=`cat /sys/devices/system/cpu/present | cut -d - -f 2`

	for i in `seq 0 $NCPU`;
	do
		taskset -pc $i ./pm_polluter &
	done
}

run_taskset()
{
	rm -f curr_taskset
	cat $1 | sed "s/task //" | sed "s/\#.*//" | sed "/^$/d" >> curr_taskset
	# Read task set from some source and start all tasks.
	TASK=0
	while read inputline;
	do
		e=`echo $inputline | awk -F' ' '{print $1}'`
		p=`echo $inputline | awk -F' ' '{print $2}'`
		./rt_launch -w $e $p ./pm_task "./$2/res_plugin=`expr $A`_wss=`expr $W`_tss=`expr $X`_`expr $Y`_`expr $TASK`.raw"
		TASK=`expr $TASK + 1`
	done < ./curr_taskset
	echo "($A, $W, $X, $Y)"
	# try to see if this solves the problem of the task which is not released at every run
	# speculation: not properly set up when release put it in the queue
	sleep 5
	./release_ts -d 3000
	# launchpolluter
	# Sleep for 150 seconds. This includes ~60 seconds
	# of run time followed by 90 seconds of "tear down" time. (to save files)
	# NOTE: may need to sleep longer than this...
	sleep 150
	sync
	# killall pm_be_polluter
	# sleep 2
	killall pm_task
	sleep 1
	killall rt_launch
}

for A in "GSN-EDF";
do
	echo "Setting plugin $A..."
	./setsched $A
	sleep 1

	for W in 1024;
	do
		echo "Experiments for WSS of `expr $W`KB"
		scons ARCH=x86_64 WSS=$W
		sleep 1

		SET1=$(echo `seq 10 10 40`)
		SET2=$(echo `seq 50 25 125`)
		SET3=$(echo `seq 150 50 250`)
		for X in $SET1 $SET2 $SET3; # Number of tasks
		do
			for Y in `seq 0 9`; # Taskset number
			do
				run_taskset "`expr ../$A`-ts/ts-uni_light-`expr $X`-`expr $Y`.ts" "pm_raw_results"
			done
		done
        done
	DATE=`date +%Y%m%d-%H%M`
	mkdir pm_raw_results/$DATE
	mv pm_raw_results/*.raw pm_raw_results/$DATE
done