diff options
26 files changed, 113 insertions, 46 deletions
| @@ -6,12 +6,12 @@ case-study: | |||
| 6 | $(MAKE) -C SD-VBS/benchmarks compile | 6 | $(MAKE) -C SD-VBS/benchmarks compile |
| 7 | 7 | ||
| 8 | benchmarks: | 8 | benchmarks: |
| 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 | ||
| 17 | benches := svm mser sift texture_synthesis tracking disparity localization multi_ncut stitch | 17 | benches := 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 | |||
| @@ -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 | ||
| @@ -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 |
| 435 | static void _rt_start_loop() { | 435 | static 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 | ||
| 2 | echo "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 |
| 23 | sed -i "s/LITMUS 1/LITMUS 0/g" extra.h | 23 | sed -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 |
| 26 | echo "Building benchmarks in unpaired configuration..." | 27 | echo "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 |
| 32 | baseXI=SD-VBS/$(date +"%b%d-%H")-c-xi-$runID.txt | 33 | baseXI=SD-VBS/$(date +"%b%d-%H")-c-xi-$runID.txt |
| 33 | echo "" | ../run_bench.sh -m base -p $coreCPU -l $maxJobs -b sd-vbsNames.txt -I xi $runID | 34 | echo "" | ../run_bench.sh -m base -p $coreCPU -l $maxJobs -b sd-vbsNames.txt -I xi $runID |
| 35 | exit 0 | ||
| 34 | # Half L3, full L2 - i3 sees effect of half L3 | 36 | # Half L3, full L2 - i3 sees effect of half L3 |
| 35 | baseI3=SD-VBS/$(date +"%b%d-%H")-c-i3-$runID.txt | 37 | baseI3=SD-VBS/$(date +"%b%d-%H")-c-i3-$runID.txt |
| 36 | echo "" | ../run_bench.sh -m base -p $coreCPU -l $maxJobs -b sd-vbsNames.txt -I i3 $runID | 38 | echo "" | ../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 | ||
| 13 | if grep -q "#define LITMUS 1" ../extra.h ./extra.h 2> /dev/null; then | 13 | if grep -q "#define LITMUS 1" ../extra.h ./extra.h 2> /dev/null; then |
| 14 | LITMUS=1 | 14 | LITMUS=1 |
| 15 | fi | 15 | fi |
| 16 | 16 | ||
| 17 | if [ $# -lt 5 ]; then | 17 | if [ $# -lt 5 ]; then |
| @@ -174,7 +174,7 @@ do | |||
| 174 | fi | 174 | fi |
| 175 | i=$(( $i + 1 )) | 175 | i=$(( $i + 1 )) |
| 176 | done | 176 | done |
| 177 | 177 | ||
| 178 | echo "Done. Creating cleanup handler..." | 178 | echo "Done. Creating cleanup handler..." |
| 179 | function cleanup { | 179 | function cleanup { |
| 180 | # End contending tasks | 180 | # End contending tasks |
| @@ -327,8 +327,16 @@ FAIL_COLOR="\033[0;31m" | |||
| 327 | GOOD_COLOR="\033[0;32m" | 327 | GOOD_COLOR="\033[0;32m" |
| 328 | RESET_COLOR="\033[0m" | 328 | RESET_COLOR="\033[0m" |
| 329 | 329 | ||
| 330 | |||
| 330 | # For each benchmark | 331 | # For each benchmark |
| 331 | for (( i = 0; i < ${#bench[@]} ; i++ )); do | 332 | for (( 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 | ||
| 200 | if __name__ == "__main__": | 205 | if __name__ == "__main__": |
