summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile8
-rwxr-xr-xSD-VBS/dag_binaries/disparity_qcif_pairbin131616 -> 121696 bytes
-rwxr-xr-xSD-VBS/dag_binaries/disparity_qcif_singlebin126384 -> 120568 bytes
-rwxr-xr-xSD-VBS/dag_binaries/localization_qcif_pairbin140272 -> 130352 bytes
-rwxr-xr-xSD-VBS/dag_binaries/localization_qcif_singlebin130944 -> 125128 bytes
-rwxr-xr-xSD-VBS/dag_binaries/mser_qcif_pairbin126952 -> 121128 bytes
-rwxr-xr-xSD-VBS/dag_binaries/mser_qcif_singlebin125816 -> 119992 bytes
-rwxr-xr-xSD-VBS/dag_binaries/multi_ncut_qcif_pairbin131256 -> 121336 bytes
-rwxr-xr-xSD-VBS/dag_binaries/multi_ncut_qcif_singlebin126024 -> 120208 bytes
-rwxr-xr-xSD-VBS/dag_binaries/sift_qcif_pairbin140368 -> 134544 bytes
-rwxr-xr-xSD-VBS/dag_binaries/sift_qcif_singlebin135136 -> 125216 bytes
-rwxr-xr-xSD-VBS/dag_binaries/stitch_qcif_pairbin135640 -> 125720 bytes
-rwxr-xr-xSD-VBS/dag_binaries/stitch_qcif_singlebin130408 -> 120496 bytes
-rwxr-xr-xSD-VBS/dag_binaries/svm_qcif_pairbin135624 -> 129808 bytes
-rwxr-xr-xSD-VBS/dag_binaries/svm_qcif_singlebin130400 -> 124576 bytes
-rwxr-xr-xSD-VBS/dag_binaries/texture_synthesis_qcif_pairbin136336 -> 130512 bytes
-rwxr-xr-xSD-VBS/dag_binaries/texture_synthesis_qcif_singlebin131112 -> 121192 bytes
-rwxr-xr-xSD-VBS/dag_binaries/tracking_qcif_pairbin135576 -> 125664 bytes
-rwxr-xr-xSD-VBS/dag_binaries/tracking_qcif_singlebin130344 -> 124528 bytes
-rw-r--r--dag2
-rw-r--r--deadline_misses10
-rw-r--r--extra.h79
-rw-r--r--power_on.sh2
-rwxr-xr-xrun_all_sd-vbs.sh2
-rwxr-xr-xrun_bench.sh39
-rwxr-xr-xrun_case_study_dag.py17
26 files changed, 113 insertions, 46 deletions
diff --git a/Makefile b/Makefile
index 6408505..44171d0 100644
--- a/Makefile
+++ b/Makefile
@@ -6,12 +6,12 @@ case-study:
6 $(MAKE) -C SD-VBS/benchmarks compile 6 $(MAKE) -C SD-VBS/benchmarks compile
7 7
8benchmarks: 8benchmarks:
9 sed -i "s/LITMUS 1/LITMUS 0/g" extra.h 9 sed -i "s/LITMUS 0/LITMUS 1/g" extra.h
10 #$(MAKE) -C baseline all 10 # $(MAKE) -C baseline all
11 #$(MAKE) -C all_pairs all 11 #$(MAKE) -C all_pairs all
12 #$(MAKE) -C dis pairs 12 #$(MAKE) -C dis pairs
13# $(MAKE) -C SD-VBS/benchmarks CFLAGS=-DPAIRED compile 13 $(MAKE) -C SD-VBS/benchmarks CFLAGS=-DPAIRED compile
14 $(MAKE) -C SD-VBS/benchmarks compile 14# $(MAKE) -C SD-VBS/benchmarks compile
15 15
16 16
17benches := svm mser sift texture_synthesis tracking disparity localization multi_ncut stitch 17benches := svm mser sift texture_synthesis tracking disparity localization multi_ncut stitch
diff --git a/SD-VBS/dag_binaries/disparity_qcif_pair b/SD-VBS/dag_binaries/disparity_qcif_pair
index e40c79c..44a7f81 100755
--- a/SD-VBS/dag_binaries/disparity_qcif_pair
+++ b/SD-VBS/dag_binaries/disparity_qcif_pair
Binary files differ
diff --git a/SD-VBS/dag_binaries/disparity_qcif_single b/SD-VBS/dag_binaries/disparity_qcif_single
index 961f76f..73bd933 100755
--- a/SD-VBS/dag_binaries/disparity_qcif_single
+++ b/SD-VBS/dag_binaries/disparity_qcif_single
Binary files differ
diff --git a/SD-VBS/dag_binaries/localization_qcif_pair b/SD-VBS/dag_binaries/localization_qcif_pair
index 846e01d..5fb17b3 100755
--- a/SD-VBS/dag_binaries/localization_qcif_pair
+++ b/SD-VBS/dag_binaries/localization_qcif_pair
Binary files differ
diff --git a/SD-VBS/dag_binaries/localization_qcif_single b/SD-VBS/dag_binaries/localization_qcif_single
index 4c18acd..be38797 100755
--- a/SD-VBS/dag_binaries/localization_qcif_single
+++ b/SD-VBS/dag_binaries/localization_qcif_single
Binary files differ
diff --git a/SD-VBS/dag_binaries/mser_qcif_pair b/SD-VBS/dag_binaries/mser_qcif_pair
index 59532ba..3b66704 100755
--- a/SD-VBS/dag_binaries/mser_qcif_pair
+++ b/SD-VBS/dag_binaries/mser_qcif_pair
Binary files differ
diff --git a/SD-VBS/dag_binaries/mser_qcif_single b/SD-VBS/dag_binaries/mser_qcif_single
index 18be365..80c4abd 100755
--- a/SD-VBS/dag_binaries/mser_qcif_single
+++ b/SD-VBS/dag_binaries/mser_qcif_single
Binary files differ
diff --git a/SD-VBS/dag_binaries/multi_ncut_qcif_pair b/SD-VBS/dag_binaries/multi_ncut_qcif_pair
index a92002f..d5c9eb2 100755
--- a/SD-VBS/dag_binaries/multi_ncut_qcif_pair
+++ b/SD-VBS/dag_binaries/multi_ncut_qcif_pair
Binary files differ
diff --git a/SD-VBS/dag_binaries/multi_ncut_qcif_single b/SD-VBS/dag_binaries/multi_ncut_qcif_single
index db3d837..9772c3c 100755
--- a/SD-VBS/dag_binaries/multi_ncut_qcif_single
+++ b/SD-VBS/dag_binaries/multi_ncut_qcif_single
Binary files differ
diff --git a/SD-VBS/dag_binaries/sift_qcif_pair b/SD-VBS/dag_binaries/sift_qcif_pair
index e8fb035..d08dcd6 100755
--- a/SD-VBS/dag_binaries/sift_qcif_pair
+++ b/SD-VBS/dag_binaries/sift_qcif_pair
Binary files differ
diff --git a/SD-VBS/dag_binaries/sift_qcif_single b/SD-VBS/dag_binaries/sift_qcif_single
index f829bbe..a1c8c3d 100755
--- a/SD-VBS/dag_binaries/sift_qcif_single
+++ b/SD-VBS/dag_binaries/sift_qcif_single
Binary files differ
diff --git a/SD-VBS/dag_binaries/stitch_qcif_pair b/SD-VBS/dag_binaries/stitch_qcif_pair
index e0359cb..a6e9ea9 100755
--- a/SD-VBS/dag_binaries/stitch_qcif_pair
+++ b/SD-VBS/dag_binaries/stitch_qcif_pair
Binary files differ
diff --git a/SD-VBS/dag_binaries/stitch_qcif_single b/SD-VBS/dag_binaries/stitch_qcif_single
index 31278ac..209fc86 100755
--- a/SD-VBS/dag_binaries/stitch_qcif_single
+++ b/SD-VBS/dag_binaries/stitch_qcif_single
Binary files differ
diff --git a/SD-VBS/dag_binaries/svm_qcif_pair b/SD-VBS/dag_binaries/svm_qcif_pair
index aa9e7f1..8891062 100755
--- a/SD-VBS/dag_binaries/svm_qcif_pair
+++ b/SD-VBS/dag_binaries/svm_qcif_pair
Binary files differ
diff --git a/SD-VBS/dag_binaries/svm_qcif_single b/SD-VBS/dag_binaries/svm_qcif_single
index da0986e..76da83f 100755
--- a/SD-VBS/dag_binaries/svm_qcif_single
+++ b/SD-VBS/dag_binaries/svm_qcif_single
Binary files differ
diff --git a/SD-VBS/dag_binaries/texture_synthesis_qcif_pair b/SD-VBS/dag_binaries/texture_synthesis_qcif_pair
index 4017329..5133606 100755
--- a/SD-VBS/dag_binaries/texture_synthesis_qcif_pair
+++ b/SD-VBS/dag_binaries/texture_synthesis_qcif_pair
Binary files differ
diff --git a/SD-VBS/dag_binaries/texture_synthesis_qcif_single b/SD-VBS/dag_binaries/texture_synthesis_qcif_single
index 9e75bce..c982e12 100755
--- a/SD-VBS/dag_binaries/texture_synthesis_qcif_single
+++ b/SD-VBS/dag_binaries/texture_synthesis_qcif_single
Binary files differ
diff --git a/SD-VBS/dag_binaries/tracking_qcif_pair b/SD-VBS/dag_binaries/tracking_qcif_pair
index 3967bc8..bafb339 100755
--- a/SD-VBS/dag_binaries/tracking_qcif_pair
+++ b/SD-VBS/dag_binaries/tracking_qcif_pair
Binary files differ
diff --git a/SD-VBS/dag_binaries/tracking_qcif_single b/SD-VBS/dag_binaries/tracking_qcif_single
index 023dfc9..25d9d80 100755
--- a/SD-VBS/dag_binaries/tracking_qcif_single
+++ b/SD-VBS/dag_binaries/tracking_qcif_single
Binary files differ
diff --git a/dag b/dag
index 7217bfa..5dbd6b6 100644
--- a/dag
+++ b/dag
@@ -1 +1 @@
1,disparity_qcif, cut001, 5, 9, 4, 1, 100, 1, 0, svm_qcif, svm001 \ No newline at end of file 1,disparity_qcif, dis001, 5, 1, 3, 1, 10, 1, 19, mser_qcif, mser001 \ No newline at end of file
diff --git a/deadline_misses b/deadline_misses
index 90ccbf7..664ac11 100644
--- a/deadline_misses
+++ b/deadline_misses
@@ -1,2 +1,8 @@
1(svm001/232202:2) HAZARDOUS: Level-B tardy 50419794 ns, relative tardiness 0.504198 1(dis001/93299:2) tardy 3033045 ns, relative tardiness 0.303304
2(svm001/232202:3) HAZARDOUS: Level-B tardy 639529 ns, relative tardiness 0.006395 2(dis001/93299:3) tardy 6005778 ns, relative tardiness 0.600578
3(mser001/93302:4) tardy 102354 ns, relative tardiness 0.010235
4(dis001/93299:4) tardy 8989592 ns, relative tardiness 0.898959
5(mser001/93302:5) tardy 3083757 ns, relative tardiness 0.308376
6(dis001/93299:5) tardy 11969214 ns, relative tardiness 1.196921
7(mser001/93302:6) tardy 6060660 ns, relative tardiness 0.606066
8(dis001/93299:6) tardy 15251106 ns, relative tardiness 1.525111
diff --git a/extra.h b/extra.h
index 5f08a60..7bcc8f5 100644
--- a/extra.h
+++ b/extra.h
@@ -244,10 +244,10 @@ static void _rt_load_params_itrl(int argc, char **argv) {
244 exit(1); 244 exit(1);
245 } 245 }
246 _rt_cp = get_ctrl_page(); 246 _rt_cp = get_ctrl_page();
247 if (wait && wait_for_ts_release() != 0) { 247 // if (wait && wait_for_ts_release() != 0) {
248 perror("Unable to wait for taskset release"); 248 // perror("Unable to wait for taskset release");
249 exit(1); 249 // exit(1);
250 } 250 // }
251#endif /* LITMUS */ 251#endif /* LITMUS */
252#if MMDC_PROF 252#if MMDC_PROF
253 SETUP_MMDC 253 SETUP_MMDC
@@ -434,31 +434,46 @@ out:
434// Start a job 434// Start a job
435static void _rt_start_loop() { 435static void _rt_start_loop() {
436#if LITMUS 436#if LITMUS
437 static lt_t last = 0; 437 if (_rt_jobs_complete == 0) {
438 lt_t now = litmus_clock(); 438 if(wait_for_ts_release() != 0){
439 if (now > _rt_cp->deadline) { 439 perror("Unable to wait for taskset release");
440 fprintf(stderr, "(%s/%d:%lu) ", _rt_our_prog_name, gettid(), _rt_cp->job_index); 440 exit(1);
441 if (_rt_crit == 0) 441 }
442 fprintf(stderr, "CATASTROPHIC: Level-A"); 442 }
443 else if (_rt_crit == 1) 443 else{
444 fprintf(stderr, "HAZARDOUS: Level-B"); 444 if (sleep_next_period() != 0) {
445 else 445 perror("Unable to sleep for next period");
446 fprintf(stderr, "MAJOR: Level-C"); 446 }
447 fprintf(stderr, " tardy %llu ns, "
448 "relative tardiness %f\n",
449 now - _rt_cp->deadline,
450 (now - _rt_cp->deadline) / (double)_rt_period);
451 } 447 }
452 if (last == 0) { 448 // static lt_t last = 0;
453 last = now; 449 // lt_t now = litmus_clock();
454 } 450 // fprintf(stderr, "current now : %llu\n", now);
451 // if (now > _rt_cp->deadline) {
452 // fprintf(stderr, "(%s/%d:%lu) ", _rt_our_prog_name, gettid(), _rt_cp->job_index);
453 // // if (_rt_crit == 0)
454 // // fprintf(stderr, "CATASTROPHIC: Level-A");
455 // // else if (_rt_crit == 1)
456 // // fprintf(stderr, "HAZARDOUS: Level-B");
457 // // else
458 // // fprintf(stderr, "MAJOR: Level-C");
459 // fprintf(stderr, " tardy %llu ns, "
460 // "relative tardiness %f\n",
461 // now - _rt_cp->deadline,
462 // (now - _rt_cp->deadline) / (double)_rt_period);
463 // }
464 // if (last == 0) {
465 // last = now;
466 // }
455 // else if (now > last + 60ull * _BILLION && _rt_crit >= 2) { 467 // else if (now > last + 60ull * _BILLION && _rt_crit >= 2) {
456 // last = now; 468 // last = now;
457 // fprintf(stderr, "(%s/%d:%lu) Ping\n", _rt_our_prog_name, gettid(), _rt_cp->job_index); 469 // fprintf(stderr, "(%s/%d:%lu) Ping\n", _rt_our_prog_name, gettid(), _rt_cp->job_index);
458 // } 470 // }
459 if (sleep_next_period() != 0) { 471 // lt_t now = litmus_clock();
460 perror("Unable to sleep for next period"); 472 // if(_rt_jobs_complete != 0){
461 } 473 // fprintf(stderr, "in start before sleep: release: %llu, deadline: %llu, now: %llu\n", _rt_cp->release ,_rt_cp->deadline, litmus_clock());
474
475 // fprintf(stderr, "in start after sleep: release: %llu, deadline: %llu, now: %llu\n", _rt_cp->release ,_rt_cp->deadline, litmus_clock());
476 // }
462#else 477#else
463 sched_yield(); 478 sched_yield();
464#endif /* LITMUS */ 479#endif /* LITMUS */
@@ -488,6 +503,22 @@ static void _rt_stop_loop() {
488 get_mmdc_profiling_results(mmdc, &mmdc_res); 503 get_mmdc_profiling_results(mmdc, &mmdc_res);
489#endif /* MMDC_PROF */ 504#endif /* MMDC_PROF */
490 _rt_save_job_result(); 505 _rt_save_job_result();
506#if LITMUS
507 long long end = _rt_end_time[_rt_jobs_complete];
508 if (end > _rt_cp->deadline) {
509 fprintf(stderr, "(%s/%d:%lu) ", _rt_our_prog_name, gettid(), _rt_cp->job_index);
510 // if (_rt_crit == 0)
511 // fprintf(stderr, "CATASTROPHIC: Level-A");
512 // else if (_rt_crit == 1)
513 // fprintf(stderr, "HAZARDOUS: Level-B");
514 // else
515 // fprintf(stderr, "MAJOR: Level-C");
516 fprintf(stderr, " tardy %llu ns, "
517 "relative tardiness %f\n",
518 end - _rt_cp->deadline,
519 (end - _rt_cp->deadline) / (double)_rt_period);
520 }
521#endif
491 _rt_jobs_complete++; 522 _rt_jobs_complete++;
492} 523}
493 524
diff --git a/power_on.sh b/power_on.sh
new file mode 100644
index 0000000..0a65288
--- /dev/null
+++ b/power_on.sh
@@ -0,0 +1,2 @@
1#!/bin/bash
2echo "performance" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
diff --git a/run_all_sd-vbs.sh b/run_all_sd-vbs.sh
index 2db51f2..102af14 100755
--- a/run_all_sd-vbs.sh
+++ b/run_all_sd-vbs.sh
@@ -21,6 +21,7 @@ date
21 21
22# Configure libextra for benchmarking 22# Configure libextra for benchmarking
23sed -i "s/LITMUS 1/LITMUS 0/g" extra.h 23sed -i "s/LITMUS 1/LITMUS 0/g" extra.h
24# sed -i "s/LITMUS 0/LITMUS 1/g" extra.h
24 25
25# Run the pairs baseline and some comparisons to examine the effect of less cache 26# Run the pairs baseline and some comparisons to examine the effect of less cache
26echo "Building benchmarks in unpaired configuration..." 27echo "Building benchmarks in unpaired configuration..."
@@ -31,6 +32,7 @@ echo "Done. Running experiments..."
31# Full L3, full L2 - xi is the baseline for the pairs 32# Full L3, full L2 - xi is the baseline for the pairs
32baseXI=SD-VBS/$(date +"%b%d-%H")-c-xi-$runID.txt 33baseXI=SD-VBS/$(date +"%b%d-%H")-c-xi-$runID.txt
33echo "" | ../run_bench.sh -m base -p $coreCPU -l $maxJobs -b sd-vbsNames.txt -I xi $runID 34echo "" | ../run_bench.sh -m base -p $coreCPU -l $maxJobs -b sd-vbsNames.txt -I xi $runID
35exit 0
34# Half L3, full L2 - i3 sees effect of half L3 36# Half L3, full L2 - i3 sees effect of half L3
35baseI3=SD-VBS/$(date +"%b%d-%H")-c-i3-$runID.txt 37baseI3=SD-VBS/$(date +"%b%d-%H")-c-i3-$runID.txt
36echo "" | ../run_bench.sh -m base -p $coreCPU -l $maxJobs -b sd-vbsNames.txt -I i3 $runID 38echo "" | ../run_bench.sh -m base -p $coreCPU -l $maxJobs -b sd-vbsNames.txt -I i3 $runID
diff --git a/run_bench.sh b/run_bench.sh
index 39e9dcb..242d987 100755
--- a/run_bench.sh
+++ b/run_bench.sh
@@ -11,7 +11,7 @@
11# - L2+L3 cache splitting (if OS supported) 11# - L2+L3 cache splitting (if OS supported)
12 12
13if grep -q "#define LITMUS 1" ../extra.h ./extra.h 2> /dev/null; then 13if grep -q "#define LITMUS 1" ../extra.h ./extra.h 2> /dev/null; then
14 LITMUS=1 14LITMUS=1
15fi 15fi
16 16
17if [ $# -lt 5 ]; then 17if [ $# -lt 5 ]; then
@@ -174,7 +174,7 @@ do
174 fi 174 fi
175 i=$(( $i + 1 )) 175 i=$(( $i + 1 ))
176done 176done
177 177
178echo "Done. Creating cleanup handler..." 178echo "Done. Creating cleanup handler..."
179function cleanup { 179function cleanup {
180 # End contending tasks 180 # End contending tasks
@@ -327,8 +327,16 @@ FAIL_COLOR="\033[0;31m"
327GOOD_COLOR="\033[0;32m" 327GOOD_COLOR="\033[0;32m"
328RESET_COLOR="\033[0m" 328RESET_COLOR="\033[0m"
329 329
330
330# For each benchmark 331# For each benchmark
331for (( i = 0; i < ${#bench[@]} ; i++ )); do 332for (( i = 0; i < ${#bench[@]} ; i++ )); do
333 # PERIOD="1000"
334
335 # if [[ "${bench[$i]}" == "multi_ncut_qcif" ]]; then
336 # PERIOD="10000"
337 # echo "-------------${bench[$i]}------------------"
338 # fi
339
332 # Search for the benchmark in this directory, than /bin 340 # Search for the benchmark in this directory, than /bin
333 if [[ -f ${bench[$i]} ]]; then 341 if [[ -f ${bench[$i]} ]]; then
334 prefix="." 342 prefix="."
@@ -338,8 +346,13 @@ for (( i = 0; i < ${#bench[@]} ; i++ )); do
338 if [[ "$mode" == "base" ]]; then 346 if [[ "$mode" == "base" ]]; then
339 # Just run the benchmark if TACLeBench 347 # Just run the benchmark if TACLeBench
340 # Check if we're using LITMUS^RT or not 348 # Check if we're using LITMUS^RT or not
341 if [[ -v $LITMUS ]]; then 349 if [[ -v LITMUS ]]; then
342 echo "${input[$i]}" | numactl $numa_arg0 $prefix/${bench[$i]} ${bench[$i]} $maxJobs $core $runID-$userRunID 1 350 # echo "numactl $numa_arg0 $prefix/${bench[$i]} ${bench[$i]} $maxJobs $core $runID-$userRunID 1 $PERIOD 1 0"
351 echo "${input[$i]}" | numactl $numa_arg0 $prefix/${bench[$i]} ${bench[$i]} $maxJobs $core $runID-$userRunID 1 $PERIOD 1 0 & PID1=$!
352 # sudo /home/ae/liblitmus/release_ts
353 # echo "waiting......"
354 # wait $PID1
355 # exit 0
343 else 356 else
344 # Remember: Unpaired tasks always get access to all colors (so we --interleave all) 357 # Remember: Unpaired tasks always get access to all colors (so we --interleave all)
345 echo "${input[$i]}" | chrt -r 97 numactl $numa_arg0 taskset -c $core $prefix/${bench[$i]} ${bench[$i]} $maxJobs $core $runID-$userRunID 1 358 echo "${input[$i]}" | chrt -r 97 numactl $numa_arg0 taskset -c $core $prefix/${bench[$i]} ${bench[$i]} $maxJobs $core $runID-$userRunID 1
@@ -349,7 +362,7 @@ for (( i = 0; i < ${#bench[@]} ; i++ )); do
349 while read j; do # For cache setting 362 while read j; do # For cache setting
350 echo $j > /sys/fs/resctrl/benchmarks/schemata 363 echo $j > /sys/fs/resctrl/benchmarks/schemata
351 while read ii; do # For WSS setting 364 while read ii; do # For WSS setting
352 if [[ -v $LITMUS ]]; then 365 if [[ -v LITMUS ]]; then
353 ./gen_input.py ${bench[$i]} inputs/${bench[$i]^}/$template_input $ii | numactl $numa_arg0 $prefix/${bench[$i]} $bench{[$i]}-$ii-$j $maxJobs $core $runID-$userRunID 1 366 ./gen_input.py ${bench[$i]} inputs/${bench[$i]^}/$template_input $ii | numactl $numa_arg0 $prefix/${bench[$i]} $bench{[$i]}-$ii-$j $maxJobs $core $runID-$userRunID 1
354 else 367 else
355 ./gen_input.py ${bench[$i]} inputs/${bench[$i]^}/$template_input $ii | chrt -r 97 numactl $numa_arg0 taskset -c $core $prefix/${bench[$i]} ${bench[$i]}-$ii-$j $maxJobs $core $runID-$userRunID 1 368 ./gen_input.py ${bench[$i]} inputs/${bench[$i]^}/$template_input $ii | chrt -r 97 numactl $numa_arg0 taskset -c $core $prefix/${bench[$i]} ${bench[$i]}-$ii-$j $maxJobs $core $runID-$userRunID 1
@@ -364,11 +377,19 @@ for (( i = 0; i < ${#bench[@]} ; i++ )); do
364 start=0 377 start=0
365 fi 378 fi
366 for (( j = $start; j < ${#bench[@]} ; j++ )); do 379 for (( j = $start; j < ${#bench[@]} ; j++ )); do
380 # PERIOD="1000"
381 # if [[ "${bench[$i]}" == "multi_ncut_qcif" || "${bench[$j]}" == "multi_ncut_qcif" ]]; then
382 # PERIOD="20000"
383 # echo "-------------${bench[$i]}---------${bench[$j]}---------"
384 # fi
367 if [[ ! -v async ]]; then 385 if [[ ! -v async ]]; then
368 # Synchronize between pairs - original hard real-time SMT approach 386 # Synchronize between pairs - original hard real-time SMT approach
369 if [[ -v $LITMUS ]]; then 387 if [[ -v LITMUS ]]; then
370 echo "${input[$i]}" | numactl $numa_arg0 taskset -c $core $prefix/${bench[$i]} ${bench[$i]} $maxJobs $core $core_two ${bench[$j]} $runID-$userRunID-A 1 & PID1=$!; 388 # echo "numactl $numa_arg0 taskset -c $core $prefix/${bench[$i]} ${bench[$i]} $maxJobs $core $core_two ${bench[$j]} $runID-$userRunID-A 1 $PERIOD 1 0 & PID1=$!;"
371 echo "${input[$j]}" | numactl $numa_arg1 taskset -c $core_two $prefix/${bench[$j]} ${bench[$j]} $maxJobs $core_two $core ${bench[$i]} $runID-$userRunID-B 1 & PID2=$!; 389 # echo "numactl $numa_arg1 taskset -c $core_two $prefix/${bench[$j]} ${bench[$j]} $maxJobs $core_two $core ${bench[$i]} $runID-$userRunID-B 1 $PERIOD 1 0 & PID2=$!;"
390 echo "${input[$i]}" | numactl $numa_arg0 taskset -c $core $prefix/${bench[$i]} ${bench[$i]} $maxJobs $core $core_two ${bench[$j]} $runID-$userRunID-A 1 $PERIOD 1 0 & PID1=$!;
391 echo "${input[$j]}" | numactl $numa_arg1 taskset -c $core_two $prefix/${bench[$j]} ${bench[$j]} $maxJobs $core_two $core ${bench[$i]} $runID-$userRunID-B 1 $PERIOD 1 0 & PID2=$!;
392 # sudo /home/ae/liblitmus/release_ts
372 else 393 else
373 echo "${input[$i]}" | chrt -r 97 numactl $numa_arg0 taskset -c $core $prefix/${bench[$i]} ${bench[$i]} $maxJobs $core $core_two ${bench[$j]} $runID-$userRunID-A 1 & PID1=$!; 394 echo "${input[$i]}" | chrt -r 97 numactl $numa_arg0 taskset -c $core $prefix/${bench[$i]} ${bench[$i]} $maxJobs $core $core_two ${bench[$j]} $runID-$userRunID-A 1 & PID1=$!;
374 echo "${input[$j]}" | chrt -r 97 numactl $numa_arg1 taskset -c $core_two $prefix/${bench[$j]} ${bench[$j]} $maxJobs $core_two $core ${bench[$i]} $runID-$userRunID-B 1 & PID2=$!; 395 echo "${input[$j]}" | chrt -r 97 numactl $numa_arg1 taskset -c $core_two $prefix/${bench[$j]} ${bench[$j]} $maxJobs $core_two $core ${bench[$i]} $runID-$userRunID-B 1 & PID2=$!;
@@ -377,7 +398,7 @@ for (( i = 0; i < ${#bench[@]} ; i++ )); do
377 wait $PID1 $PID2 398 wait $PID1 $PID2
378 else 399 else
379 # No synchronization between pairs - original soft real-time SMT approach 400 # No synchronization between pairs - original soft real-time SMT approach
380 if [[ -v $LITMUS ]]; then 401 if [[ -v LITMUS ]]; then
381 echo "${input[$j]}" | numactl $numa_arg0 taskset -c $core $prefix/${bench[$j]} ${bench[$j]} -1 $core NULL 0 & PID1=$!; 402 echo "${input[$j]}" | numactl $numa_arg0 taskset -c $core $prefix/${bench[$j]} ${bench[$j]} -1 $core NULL 0 & PID1=$!;
382 echo "${input[$i]}" | numactl $numa_arg1 taskset -c $core_two $prefix/${bench[$i]} ${bench[$i]}"+"${bench[$j]} $maxJobs $core_two $runID-$userRunID 1 & PID2=$!; 403 echo "${input[$i]}" | numactl $numa_arg1 taskset -c $core_two $prefix/${bench[$i]} ${bench[$i]}"+"${bench[$j]} $maxJobs $core_two $runID-$userRunID 1 & PID2=$!;
383 else 404 else
diff --git a/run_case_study_dag.py b/run_case_study_dag.py
index d4f12e1..e2c4607 100755
--- a/run_case_study_dag.py
+++ b/run_case_study_dag.py
@@ -99,18 +99,20 @@ def main(pathName):
99 in_ccx = core % 4 99 in_ccx = core % 4
100 mask = "0000" 100 mask = "0000"
101 mask = mask[:in_ccx] +'f'+ mask[in_ccx+1:] 101 mask = mask[:in_ccx] +'f'+ mask[in_ccx+1:]
102 run('echo {},{} > /sys/fs/resctrl/core-{}/cpus_list'.format(core,core+16, core))
103 # run('echo {} > /sys/fs/resctrl/core-{}/cpus_list'.format(core, core))
102 if ccx == 0: 104 if ccx == 0:
103 run('echo {} > /sys/fs/resctrl/core-{}/cpus_list'.format(core, core)) 105 # run('echo {},{} > /sys/fs/resctrl/core-{}/cpus_list'.format(core, core))
104 run('echo "L3:0=' + mask + ';1=0000;2=0000;3=0000" > /sys/fs/resctrl/core-{}/schemata'.format(core)) 106 run('echo "L3:0=' + mask + ';1=0000;2=0000;3=0000" > /sys/fs/resctrl/core-{}/schemata'.format(core))
105 # run('echo "L3:0=ffff;1=0000;2=0000;3=0000" > /sys/fs/resctrl/core-{}/schemata'.format(core)) 107 # run('echo "L3:0=ffff;1=0000;2=0000;3=0000" > /sys/fs/resctrl/core-{}/schemata'.format(core))
106 if ccx == 1: 108 if ccx == 1:
107 run('echo {} > /sys/fs/resctrl/core-{}/cpus_list'.format(core, core)) 109 # run('echo {},{} > /sys/fs/resctrl/core-{}/cpus_list'.format(core, core))
108 run('echo "L3:0=0000;1=' + mask + ';2=0000;3=0000" > /sys/fs/resctrl/core-{}/schemata'.format(core)) 110 run('echo "L3:0=0000;1=' + mask + ';2=0000;3=0000" > /sys/fs/resctrl/core-{}/schemata'.format(core))
109 if ccx == 2: 111 if ccx == 2:
110 run('echo {} > /sys/fs/resctrl/core-{}/cpus_list'.format(core, core)) 112 # run('echo {},{} > /sys/fs/resctrl/core-{}/cpus_list'.format(core, core))
111 run('echo "L3:0=0000;1=0000;2=' + mask + ';3=0000" > /sys/fs/resctrl/core-{}/schemata'.format(core)) 113 run('echo "L3:0=0000;1=0000;2=' + mask + ';3=0000" > /sys/fs/resctrl/core-{}/schemata'.format(core))
112 if ccx == 3: 114 if ccx == 3:
113 run('echo {} > /sys/fs/resctrl/core-{}/cpus_list'.format(core, core)) 115 # run('echo {},{} > /sys/fs/resctrl/core-{}/cpus_list'.format(core, core))
114 run('echo "L3:0=0000;1=0000;2=0000;3=' + mask + '" > /sys/fs/resctrl/core-{}/schemata'.format(core)) 116 run('echo "L3:0=0000;1=0000;2=0000;3=' + mask + '" > /sys/fs/resctrl/core-{}/schemata'.format(core))
115 117
116 # return 1 118 # return 1
@@ -143,13 +145,14 @@ def main(pathName):
143 # Arg format: <unique name> <num_iters> <core> <NULL runID> <save?> <period> <crit lvl> <phase> 145 # Arg format: <unique name> <num_iters> <core> <NULL runID> <save?> <period> <crit lvl> <phase>
144 arg = " " + task_name + " " + num_iters +" " + core_num +" " + run_id +" " + save_result+" " + period +" " + crt_level + " "+ phase 146 arg = " " + task_name + " " + num_iters +" " + core_num +" " + run_id +" " + save_result+" " + period +" " + crt_level + " "+ phase
145 bench_tsk = subprocess.Popen(input_cmd[binary_name] + " | numactl --interleave=all " + binary + arg, shell=True, executable='/bin/bash', stderr=stderr_file) 147 bench_tsk = subprocess.Popen(input_cmd[binary_name] + " | numactl --interleave=all " + binary + arg, shell=True, executable='/bin/bash', stderr=stderr_file)
148
146 else: 149 else:
147 # Arg format: <unique name> <num_iters> <core> <NULL runID> 150 # Arg format: <unique name> <num_iters> <core> <NULL runID> <save?>
148 binary = binary_path + binary_name + "_single_no_litmus" 151 binary = binary_path + binary_name + "_single_no_litmus"
149 arg = " " + task_name + " " + num_iters +" " + core_num +" " + run_id +" " + save_result+" " 152 arg = " " + task_name + " " + num_iters +" " + core_num +" " + run_id +" " + save_result+" "
150 bench_tsk = subprocess.Popen(input_cmd[binary_name] + " | numactl --interleave=all taskset -c " + core_num + " " + binary + arg, shell=True, executable='/bin/bash', stderr=stderr_file) 153 bench_tsk = subprocess.Popen(input_cmd[binary_name] + " | numactl --interleave=all taskset -c " + core_num + " " + binary + arg, shell=True, executable='/bin/bash', stderr=stderr_file)
151 154
152 # print(input_cmd[binary_name] + " | numactl --interleave=all " + binary + arg) 155 print(input_cmd[binary_name] + " | numactl --interleave=all " + binary + arg)
153 # print(binary) 156 # print(binary)
154 # print(arg) 157 # print(arg)
155 pid_str = ID2PID(binary + " " + task_name) 158 pid_str = ID2PID(binary + " " + task_name)
@@ -195,6 +198,8 @@ def main(pathName):
195 198
196 run("echo " + pid1_str + " > /sys/fs/resctrl/core-" + str(phys_core) + "/tasks") 199 run("echo " + pid1_str + " > /sys/fs/resctrl/core-" + str(phys_core) + "/tasks")
197 run("echo " + pid2_str + " > /sys/fs/resctrl/core-" + str(phys_core) + "/tasks") 200 run("echo " + pid2_str + " > /sys/fs/resctrl/core-" + str(phys_core) + "/tasks")
201 # run("wait " + pid1_str)
202 # run("wait " + pid2_str)
198 pairID += 1 203 pairID += 1
199 204
200if __name__ == "__main__": 205if __name__ == "__main__":