summaryrefslogtreecommitdiffstats
path: root/baseline
diff options
context:
space:
mode:
Diffstat (limited to 'baseline')
-rw-r--r--baseline/Makefile8
-rwxr-xr-xbaseline/run_baseline_L3_ONLY.sh152
-rw-r--r--baseline/source/anagram/anagram.c6
-rw-r--r--baseline/source/anagram/anagram_stdlib.c2
-rw-r--r--baseline/source/huff_enc/huff_enc.c2
-rw-r--r--baseline/source/rijndael_dec/rijndael_dec.c1
-rwxr-xr-xbaseline/summarize.py34
-rw-r--r--baseline/tacleNames.txt18
8 files changed, 22 insertions, 201 deletions
diff --git a/baseline/Makefile b/baseline/Makefile
index 40b57f4..a929bc6 100644
--- a/baseline/Makefile
+++ b/baseline/Makefile
@@ -1,6 +1,6 @@
1LIBLITMUS ?= /media/speedy/litmus/liblitmus 1LIBLITMUS ?= /playpen/mc2/liblitmus
2CC ?= gcc 2CC ?= gcc
3CFLAGS = -pthread -O2 -I.. 3override CFLAGS = -pthread -O2 -I..
4LDFLAGS = -lrt 4LDFLAGS = -lrt
5COMMON = ../extra.h 5COMMON = ../extra.h
6 6
@@ -11,8 +11,8 @@ endif
11 11
12# Include all the LITMUS^RT headers if we're using it 12# Include all the LITMUS^RT headers if we're using it
13ifneq ($(shell grep "define LITMUS 1" ../extra.h),) 13ifneq ($(shell grep "define LITMUS 1" ../extra.h),)
14 CFLAGS += -I${LIBLITMUS}/include -I${LIBLITMUS}/arch/arm/include 14 override CFLAGS += -I${LIBLITMUS}/include -I${LIBLITMUS}/arch/arm/include
15 LDFLAGS += -L${LIBLITMUS} -llitmus 15 override LDFLAGS += -L${LIBLITMUS} -llitmus
16endif 16endif
17 17
18all: bin/cjpeg_wrbmp bin/huff_enc bin/gsm_enc bin/dijkstra bin/h264_dec bin/susan bin/adpcm_enc bin/rijndael_dec bin/huff_dec bin/rijndael_enc bin/gsm_dec bin/anagram bin/epic bin/ammunition bin/g723_enc bin/ndes bin/petrinet bin/statemate bin/cjpeg_transupp bin/mpeg2 bin/fmref bin/audiobeam bin/adpcm_dec 18all: bin/cjpeg_wrbmp bin/huff_enc bin/gsm_enc bin/dijkstra bin/h264_dec bin/susan bin/adpcm_enc bin/rijndael_dec bin/huff_dec bin/rijndael_enc bin/gsm_dec bin/anagram bin/epic bin/ammunition bin/g723_enc bin/ndes bin/petrinet bin/statemate bin/cjpeg_transupp bin/mpeg2 bin/fmref bin/audiobeam bin/adpcm_dec
diff --git a/baseline/run_baseline_L3_ONLY.sh b/baseline/run_baseline_L3_ONLY.sh
deleted file mode 100755
index 4183653..0000000
--- a/baseline/run_baseline_L3_ONLY.sh
+++ /dev/null
@@ -1,152 +0,0 @@
1#!/bin/bash
2
3core=$1
4maxJobs=$2
5userRunID=$3
6tacleNames=tacleNames.txt
7
8if [ $# -lt 3 ]; then
9 echo "Usage $0 <core ID> <number of iterations> <run ID> [TACLe names file] [--contend]"
10 exit
11fi
12
13if [ $# -gt 3 ]; then
14 echo "Using alternate list of TACLe benchmarks from $4"
15 tacleNames=$4
16fi
17
18if [ "$EUID" -ne 0 ]
19then
20 echo "You need to be root to enable interrupt isolation and real-time execution!"
21 exit
22fi
23
24echo "Making sure that binaries are up to date..."
25while read i; do
26 make bin/$i
27done < $tacleNames
28echo "Done. Disabling real-time throttling..."
29
30# Turn off rt throttling
31echo -1 > /proc/sys/kernel/sched_rt_runtime_us
32echo "Done. Redirecting all interrupts to core 0..."
33
34# Redirect all interrupts to core 0
35i=0
36for IRQ in /proc/irq/*
37do
38 # Skip default_smp_affinity
39 if [ -d $IRQ ]; then
40 irqList[$i]=$(cat $IRQ/smp_affinity_list)
41 echo 0 2> /dev/null > $IRQ/smp_affinity_list
42 fi
43 i=$(( $i + 1 ))
44done
45
46# Read the names of each benchmark
47j=0
48while read i; do
49 tacleProg[$j]=$i
50 j=$(( $j + 1 ))
51done < $tacleNames
52
53echo "Done. Checking for wbinvd module..."
54if [[ ! -f "/proc/wbinvd" ]]; then
55 echo "ERROR: wbinvd module not loaded. Exiting..."
56 exit
57fi
58
59# Enable L3 isolation
60echo "Done. Enabling L3 isolation..."
61mount -t resctrl resctrl /sys/fs/resctrl
62mkdir -p /sys/fs/resctrl/benchmarks
63echo $1 > /sys/fs/resctrl/benchmarks/cpus_list
64# Reset global bandwith control and remove L3 from global
65echo "L3:0=ffff;1=ffff;2=ffff;3=0000" > /sys/fs/resctrl/schemata
66echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/schemata
67# Alloc L3 to benchmark
68echo "L3:0=0000;1=0000;2=0000;3=00ff" > /sys/fs/resctrl/benchmarks/schemata
69echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/benchmarks/schemata
70echo "Done. Verifying configuration with user..."
71
72# Generate file name string
73# We append to this as we parse the environment settings
74runID=$(date +"%b%d-%H")
75
76# Confirm configuration with user
77echo "=== Global Config ==="
78cat /sys/fs/resctrl/schemata
79echo "=== Core $1 Config ==="
80cat /sys/fs/resctrl/benchmarks/cpus_list
81cat /sys/fs/resctrl/benchmarks/schemata
82if [[ $5 == "--contend" ]]; then
83 if [[ ! -f "/playpen/mc2/imx6q-thrasher/thrasher" ]]; then
84 echo "ERROR: thrasher binary not fonud. Exiting..."
85 exit
86 fi
87 echo "Will run 6 contending tasks"
88 runID=$runID-c
89else
90 runID=$runID-xc
91fi
92if uname -a | grep -q "mc2"; then
93 echo "MC^2 Autodetected. NOT SUPPORTED. Exiting..."
94 exit
95else
96 echo "MC^2 not detected. 50% L3 allocation enabled."
97 runID=$runID-i3
98fi
99if pwd | grep -qi dis; then
100 echo "Autodetected DIS. Will use script-level looping."
101fi
102echo "Results will be saved as $runID-$userRunID.txt"
103echo "Press enter to confirm environment, Ctrl-C to exit..."
104read
105
106# Start contending tasks
107if [[ $5 == "--contend" ]]; then
108 echo "Done. Starting 6 contending tasks..."
109 # Run two contending tasks on each other CCX
110 taskset -c 1 /playpen/mc2/imx6q-thrasher/thrasher &
111 taskset -c 2 /playpen/mc2/imx6q-thrasher/thrasher &
112 taskset -c 5 /playpen/mc2/imx6q-thrasher/thrasher &
113 taskset -c 6 /playpen/mc2/imx6q-thrasher/thrasher &
114 taskset -c 9 /playpen/mc2/imx6q-thrasher/thrasher &
115 taskset -c 10 /playpen/mc2/imx6q-thrasher/thrasher &
116fi
117sleep 1 # Wait for contending tasks to start
118echo "Done. Beginning benchmarks..."
119
120num_tests=$(wc -l < $tacleNames)
121for (( i = 0; i < $num_tests ; i++ ))
122do
123 # If using DIS, we have to iterate in the script as DIS won't do it for us
124 pwd | grep -qi dis
125 iters=$(python3 -c "print(int(not "$?")*("$maxJobs"-1))")
126 for ((k=0;k<=iters;k++)); do
127 # Check if we're using LITMUS^RT or not
128 if [[ -f source/extra.h ]] && grep -q "#define LITMUS 1" source/extra.h; then
129 ./bin/${tacleProg[$i]} ${tacleProg[$i]} $maxJobs $core $runID-$userRunID 1
130 else
131 # Interleave memory allocations between all nodes (only 1 node w/out MC^2)
132 chrt -r 97 numactl --interleave=all taskset -c $core ./bin/${tacleProg[$i]} ${tacleProg[$i]} $maxJobs $core $runID-$userRunID 1
133 fi
134 done
135 echo COMPLETE: ${tacleProg[$i]}
136done
137
138# End contending tasks
139if [[ $5 == "--contend" ]]; then
140 killall thrasher
141fi
142
143# Put smp_affinty back the way it was
144i=0
145for IRQ in /proc/irq/*
146do
147 if [ -d $IRQ ]; then
148 echo ${irqList[$i]} 2> /dev/null > $IRQ/smp_affinity_list
149 fi
150 i=$(( $i + 1 ))
151done
152
diff --git a/baseline/source/anagram/anagram.c b/baseline/source/anagram/anagram.c
index fc8b6a8..feb9784 100644
--- a/baseline/source/anagram/anagram.c
+++ b/baseline/source/anagram/anagram.c
@@ -305,10 +305,10 @@ void anagram_ReadDict( void )
305 _Pragma( "loopbound min 1 max 5" ) 305 _Pragma( "loopbound min 1 max 5" )
306 while ( anagram_dictionary[ i ][ strlen ] != 0 ) 306 while ( anagram_dictionary[ i ][ strlen ] != 0 )
307 strlen ++; 307 strlen ++;
308 len += strlen + 2; 308 len += strlen + 3;
309 } 309 }
310 310
311 pchBase = anagram_pchDictionary = ( char * )anagram_malloc( len ); 311 pchBase = anagram_pchDictionary = ( char * )anagram_malloc( len + 1 );
312 312
313 _Pragma( "loopbound min 2279 max 2279" ) 313 _Pragma( "loopbound min 2279 max 2279" )
314 for ( i = 0; i < anagram_DICTWORDS; i ++ ) { 314