#!/bin/bash # Copyright 2020 Joshua Bakita # Runs DIS in every configuration needed # for the paper and schedulability studies maxJobs=$1 runID=$2 coreCPU=${3:-15} threadCPU=${4:-31} if [ $# -lt 2 ]; then echo "Usage $0 " echo "CPU IDs are optional, otherwise assumed to be 15 and 31 respectively." exit fi if [[ "$EUID" != 0 ]]; then echo "You need to be root to enable spatial isolation!" exit fi date # Configure libextra for benchmarking sed -i "s/LITMUS 1/LITMUS 0/g" extra.h # Run the pairs baseline and some comparisons to examine the effect of less cache echo "Building benchmarks in unpaired configuration..." cd dis make baseline -j30 > /dev/null # Suppress noisy output echo "Done. Running experiments..." # Full L3, full L2 - xi is the baseline for the pairs baseXI=dis/$(date +"%b%d-%H")-c-xi-$runID.txt echo "" | ../run_bench.sh -m base -p $coreCPU -l $maxJobs -b dis2MbInNames.txt -B -I xi $runID # Half L3, full L2 - i3 sees effect of half L3 baseI3=dis/$(date +"%b%d-%H")-c-i3-$runID.txt echo "" | ../run_bench.sh -m base -p $coreCPU -l $maxJobs -b dis2MbInNames.txt -B -I i3 $runID # Half L3, half L2 - additional effect of half L2 baseI=dis/$(date +"%b%d-%H")-c-i-$runID.txt echo "" | ../run_bench.sh -m base -p $coreCPU -l $maxJobs -b dis2MbInNames.txt -B -I i $runID date # Run the Level-C pairs pairC=dis/$(date +"%b%d-%H")-c-xi-async-$runID.txt echo "" | ../run_bench.sh -m pair -p $coreCPU -P $threadCPU -l $maxJobs -b dis2MbInNames.txt -B -I xi -A $runID date # Run the Level-A/-B pairs echo "Building benchmarks in paired configuration..." make pairs -j30 > /dev/null # Suppress noisy output echo "Done. Continuing experiments..." # No cache isolation pairXI=dis/$(date +"%b%d-%H")-c-xi-$runID"-A.txt and -B.txt" echo "" | ../run_bench.sh -m pair -p $coreCPU -P $threadCPU -l $maxJobs -b disPairs2MbInNames.txt -B -I xi $runID # Shared L2, split L3 pairI3=dis/$(date +"%b%d-%H")-c-i3-$runID"-A.txt and -B.txt" echo "" | ../run_bench.sh -m pair -p $coreCPU -P $threadCPU -l $maxJobs -b disPairs2MbInNames.txt -B -I i3 $runID # Split L2, split L3 pairI=dis/$(date +"%b%d-%H")-c-i-$runID"-A.txt and -B.txt" echo "" | ../run_bench.sh -m pair -p $coreCPU -P $threadCPU -l $maxJobs -b disPairs2MbInNames.txt -B -I i $runID date echo "==== DONE ====" echo "Results are in:" echo "- dis/$baseXI" echo "- dis/$baseI3" echo "- dis/$baseI" echo "- dis/$pairXI" echo "- dis/$pairI3" echo "- dis/$pairI" echo "- dis/$pairC"