From ecf6547fdce39b3ec0f333c9b391b0f1c25deba5 Mon Sep 17 00:00:00 2001 From: Joshua Bakita Date: Sat, 17 Oct 2020 21:22:08 -0400 Subject: All the DIS runner scripts as used for the (rejected) RTSS'20 submission DANGER! There's an inconsistency in the input files used for the all-pairs tests and those used for the baseline tests. Baselines: run_all_dis.sh calls run_dis.sh to do all baselines. All-pairs: Uses old TACLe script (not included here). Cache allocation 2nd-order effects on SMT friendliness: run_pair_convexity.sh --- dis/bin/field_2mb | 2 + dis/bin/matrix_2mb | 2 + dis/bin/neighborhood_2mb | 2 + dis/bin/pointer_2mb | 2 + dis/bin/transitive_2mb | 2 + dis/bin/update_2mb | 2 + dis/inputs/Field/in0 | 1 + dis/inputs/Matrix/in0 | 1 + dis/inputs/Neighborhood/in0 | 1 + dis/inputs/Pointer/in0 | 3 + dis/inputs/Transitive/in0 | 1 + dis/inputs/Update/in0 | 1 + dis/inputs/WSSS_maxstride2mb | 15 ++++ dis/inputs/caches_all | 17 ++++ dis/run_all_dis.sh | 70 ++++++++++++++++ dis/run_dis.sh | 35 +++++--- dis/run_pair_convexity.sh | 184 +++++++++++++++++++++++++++++++++++++++++++ dis/setup_mem_and_global.sh | 19 +++-- 18 files changed, 343 insertions(+), 17 deletions(-) create mode 100755 dis/bin/field_2mb create mode 100755 dis/bin/matrix_2mb create mode 100755 dis/bin/neighborhood_2mb create mode 100755 dis/bin/pointer_2mb create mode 100755 dis/bin/transitive_2mb create mode 100755 dis/bin/update_2mb create mode 120000 dis/inputs/Field/in0 create mode 120000 dis/inputs/Matrix/in0 create mode 120000 dis/inputs/Neighborhood/in0 create mode 100644 dis/inputs/Pointer/in0 create mode 120000 dis/inputs/Transitive/in0 create mode 120000 dis/inputs/Update/in0 create mode 100644 dis/inputs/WSSS_maxstride2mb create mode 100644 dis/inputs/caches_all create mode 100755 dis/run_all_dis.sh create mode 100644 dis/run_pair_convexity.sh (limited to 'dis') diff --git a/dis/bin/field_2mb b/dis/bin/field_2mb new file mode 100755 index 0000000..31f2a8d --- /dev/null +++ b/dis/bin/field_2mb @@ -0,0 +1,2 @@ +#!/bin/bash +taskset -c 0 ./gen_input.py field inputs/Field/in0 2097152 | ./field $@ diff --git a/dis/bin/matrix_2mb b/dis/bin/matrix_2mb new file mode 100755 index 0000000..72710ab --- /dev/null +++ b/dis/bin/matrix_2mb @@ -0,0 +1,2 @@ +#!/bin/bash +taskset -c 0 ./gen_input.py matrix inputs/Matrix/in4 2097152 | ./matrix $@ > /dev/null diff --git a/dis/bin/neighborhood_2mb b/dis/bin/neighborhood_2mb new file mode 100755 index 0000000..226bd98 --- /dev/null +++ b/dis/bin/neighborhood_2mb @@ -0,0 +1,2 @@ +#!/bin/bash +taskset -c 0 ./gen_input.py neighborhood inputs/Neighborhood/in0 2097152 | ./neighborhood $@ > /dev/null diff --git a/dis/bin/pointer_2mb b/dis/bin/pointer_2mb new file mode 100755 index 0000000..3ce8f2b --- /dev/null +++ b/dis/bin/pointer_2mb @@ -0,0 +1,2 @@ +#!/bin/bash +taskset -c 0 ./gen_input.py pointer inputs/Pointer/in0 2097152 | ./pointer $@ diff --git a/dis/bin/transitive_2mb b/dis/bin/transitive_2mb new file mode 100755 index 0000000..b8bcf5a --- /dev/null +++ b/dis/bin/transitive_2mb @@ -0,0 +1,2 @@ +#!/bin/bash +taskset -c 0 ./gen_input.py transitive inputs/Transitive/in0 2097152 | ./transitive $@ diff --git a/dis/bin/update_2mb b/dis/bin/update_2mb new file mode 100755 index 0000000..3bc33f4 --- /dev/null +++ b/dis/bin/update_2mb @@ -0,0 +1,2 @@ +#!/bin/bash +taskset -c 0 ./gen_input.py update inputs/Update/in0 2097152 | ./update $@ diff --git a/dis/inputs/Field/in0 b/dis/inputs/Field/in0 new file mode 120000 index 0000000..2f8d436 --- /dev/null +++ b/dis/inputs/Field/in0 @@ -0,0 +1 @@ +in1 \ No newline at end of file diff --git a/dis/inputs/Matrix/in0 b/dis/inputs/Matrix/in0 new file mode 120000 index 0000000..2f8d436 --- /dev/null +++ b/dis/inputs/Matrix/in0 @@ -0,0 +1 @@ +in1 \ No newline at end of file diff --git a/dis/inputs/Neighborhood/in0 b/dis/inputs/Neighborhood/in0 new file mode 120000 index 0000000..83ac113 --- /dev/null +++ b/dis/inputs/Neighborhood/in0 @@ -0,0 +1 @@ +test1.in \ No newline at end of file diff --git a/dis/inputs/Pointer/in0 b/dis/inputs/Pointer/in0 new file mode 100644 index 0000000..3535667 --- /dev/null +++ b/dis/inputs/Pointer/in0 @@ -0,0 +1,3 @@ +10485770 15 12800000 -2 1 + +10 10485760 10485760 diff --git a/dis/inputs/Transitive/in0 b/dis/inputs/Transitive/in0 new file mode 120000 index 0000000..2f8d436 --- /dev/null +++ b/dis/inputs/Transitive/in0 @@ -0,0 +1 @@ +in1 \ No newline at end of file diff --git a/dis/inputs/Update/in0 b/dis/inputs/Update/in0 new file mode 120000 index 0000000..2f8d436 --- /dev/null +++ b/dis/inputs/Update/in0 @@ -0,0 +1 @@ +in1 \ No newline at end of file diff --git a/dis/inputs/WSSS_maxstride2mb b/dis/inputs/WSSS_maxstride2mb new file mode 100644 index 0000000..8fdbbc4 --- /dev/null +++ b/dis/inputs/WSSS_maxstride2mb @@ -0,0 +1,15 @@ +262144 +524288 +1048576 +2097152 +4194304 +6291456 +8388608 +10485760 +12582912 +14680064 +16777216 +18874368 +20971520 +23068672 +25165824 diff --git a/dis/inputs/caches_all b/dis/inputs/caches_all new file mode 100644 index 0000000..92e936c --- /dev/null +++ b/dis/inputs/caches_all @@ -0,0 +1,17 @@ +L3:0=0000;1=0000;2=0000;3=0000 +L3:0=0000;1=0000;2=0000;3=0001 +L3:0=0000;1=0000;2=0000;3=0003 +L3:0=0000;1=0000;2=0000;3=0007 +L3:0=0000;1=0000;2=0000;3=000f +L3:0=0000;1=0000;2=0000;3=001f +L3:0=0000;1=0000;2=0000;3=003f +L3:0=0000;1=0000;2=0000;3=007f +L3:0=0000;1=0000;2=0000;3=00ff +L3:0=0000;1=0000;2=0000;3=01ff +L3:0=0000;1=0000;2=0000;3=03ff +L3:0=0000;1=0000;2=0000;3=07ff +L3:0=0000;1=0000;2=0000;3=0fff +L3:0=0000;1=0000;2=0000;3=1fff +L3:0=0000;1=0000;2=0000;3=3fff +L3:0=0000;1=0000;2=0000;3=7fff +L3:0=0000;1=0000;2=0000;3=ffff diff --git a/dis/run_all_dis.sh b/dis/run_all_dis.sh new file mode 100755 index 0000000..5a6b6e1 --- /dev/null +++ b/dis/run_all_dis.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# Run baselines for all the DIS tasks +if [ "$EUID" -ne 0 ] +then + echo "You need to be root to enable cache way and interrupt isolation!" + exit +fi + +if uname -a | grep -q "mc2"; then + echo "MC^2 detected! Cache isolation will be enabled" + iso="i" +else + echo "MC^2 not detected." + iso="xi" +fi + +datestring=$(date +"%b%d-%H") +if ! grep -q irqaffinity /proc/cmdline; then + /playpen/move_interrupts_off_core15.sh +else + echo "performance" > /sys/devices/system/cpu/cpu15/cpufreq/scaling_governor +fi +WSSS=WSSS_maxstride2mb +caches=caches_all +# Consider re-enabling this only if you're interested in exploring bandwidth effects +#./setup_mem_and_global.sh +if [[ $1 == "--contend" ]]; then + echo "Will run 6 contending tasks" + echo "Files will be named $datestring--c-"$iso".txt" + echo "Please verify the above settings. Press enter to continue..." + read + # Run two contending tasks on each other CCX + taskset -c 1 /playpen/mc2/imx6q-thrasher/thrasher & + taskset -c 2 /playpen/mc2/imx6q-thrasher/thrasher & + taskset -c 5 /playpen/mc2/imx6q-thrasher/thrasher & + taskset -c 6 /playpen/mc2/imx6q-thrasher/thrasher & + taskset -c 9 /playpen/mc2/imx6q-thrasher/thrasher & + taskset -c 10 /playpen/mc2/imx6q-thrasher/thrasher & + ./run_dis.sh 15 10 $datestring-field-c-$iso Field inputs/Field/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-field-c-$iso + ./run_dis.sh 15 10 $datestring-matrix-c-$iso Matrix inputs/Matrix/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-matrix-c-$iso + ./run_dis.sh 15 10 $datestring-neighborhood-c-$iso Neighborhood inputs/Neighborhood/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-neighborhood-c-$iso + ./run_dis.sh 15 10 $datestring-pointer-c-$iso Pointer inputs/Pointer/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-pointer-c-$iso + ./run_dis.sh 15 10 $datestring-transitive-c-$iso Transitive inputs/Transitive/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-transitive-c-$iso + ./run_dis.sh 15 10 $datestring-update-c-$iso Update inputs/Update/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-update-c-$iso + killall thrasher +else + echo "Will run no contending tasks (use --contend for contending tasks)" + echo "Files will be named $datestring--xc-"$iso".txt" + echo "Please verify the above settings. Press enter to continue..." + read + killall thrasher + ./run_dis.sh 15 10 $datestring-field-xc-$iso Field inputs/Field/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-field-xc-$iso + ./run_dis.sh 15 10 $datestring-matrix-xc-$iso Matrix inputs/Matrix/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-matrix-xc-$iso + ./run_dis.sh 15 10 $datestring-neighborhood-xc-$iso Neighborhood inputs/Neighborhood/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-neighborhood-xc-$iso + ./run_dis.sh 15 10 $datestring-pointer-xc-$iso Pointer inputs/Pointer/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-pointer-xc-$iso + ./run_dis.sh 15 10 $datestring-transitive-xc-$iso Transitive inputs/Transitive/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-transitive-xc-$iso + ./run_dis.sh 15 10 $datestring-update-xc-$iso Update inputs/Update/in0 inputs/$WSSS inputs/$caches + ./postproc.sh $datestring-update-xc-$iso +fi diff --git a/dis/run_dis.sh b/dis/run_dis.sh index 3e82bfb..78745ec 100755 --- a/dis/run_dis.sh +++ b/dis/run_dis.sh @@ -4,7 +4,7 @@ core=$1 maxJobs=$2 runID=$3 benchmark=${4,} -template_input=inputs/$4/in1 +template_input=inputs/$4/in0 wss_settings=inputs/WSSS cache_settings=inputs/caches @@ -36,7 +36,6 @@ echo "Done. Disabling real-time throttling..." echo -1 > /proc/sys/kernel/sched_rt_runtime_us echo "Done. Redirecting all interrupts to core 0..." -# TODO: Make this cleaner # Redirect all interrupts to core 0 i=0 for IRQ in /proc/irq/* @@ -44,27 +43,39 @@ do # Skip default_smp_affinity if [ -d $IRQ ]; then irqList[$i]=$(cat $IRQ/smp_affinity_list) - echo 0 > $IRQ/smp_affinity_list + echo 0 2> /dev/null > $IRQ/smp_affinity_list fi i=$(( $i + 1 )) done -echo "Done. Beginning benchmarks..." -# Setup cache control group +echo "Done. Checking for wbinvd module..." +if [[ ! -f "/proc/wbinvd" ]]; then + echo "ERROR: wbinvd module not loaded. Exiting..." + exit +fi + +# Enable L3 isolation +echo "Done. Enabling L3 isolation..." mount -t resctrl resctrl /sys/fs/resctrl -mkdir /sys/fs/resctrl/benchmarks -sleep 1 # Wait a second for the group to initialize -echo $core > /sys/fs/resctrl/benchmarks/cpus_list +mkdir -p /sys/fs/resctrl/benchmarks +echo $1 > /sys/fs/resctrl/benchmarks/cpus_list +# Reset global bandwith control and remove L3 from global +echo "L3:0=ffff;1=ffff;2=ffff;3=0000" > /sys/fs/resctrl/schemata +echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/schemata +# Alloc L3 to benchmark +echo "L3:0=0000;1=0000;2=0000;3=ffff" > /sys/fs/resctrl/benchmarks/schemata +echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/benchmarks/schemata +echo "Done. Beginning benchmarks..." # Execute the benchmark for each WSS and cache config while read j; do echo $j > /sys/fs/resctrl/benchmarks/schemata while read i; do - if grep -q "#define LITMUS 1" ../../baseline/source/extra.h; then + if grep -q "#define LITMUS 1" ../baseline/source/extra.h; then echo "Using LITMUS-RT!" - ./gen_input.py $benchmark $template_input $i | ./$benchmark $benchmark-$i-$j $maxJobs $core $runID 1 + ./gen_input.py $benchmark $template_input $i | numactl -m 0 ./$benchmark $benchmark-$i-$j $maxJobs $core $runID 1 else - ./gen_input.py $benchmark $template_input $i | chrt -r 97 taskset -c $core ./$benchmark $benchmark-$i-$j $maxJobs $core $runID 1 + ./gen_input.py $benchmark $template_input $i | chrt -r 97 numactl -m 0 taskset -c $core ./$benchmark $benchmark-$i-$j $maxJobs $core $runID 1 fi done < $wss_settings done < $cache_settings @@ -74,7 +85,7 @@ i=0 for IRQ in /proc/irq/* do if [ -d $IRQ ]; then - echo ${irqList[$i]} > $IRQ/smp_affinity_list + echo ${irqList[$i]} 2> /dev/null > $IRQ/smp_affinity_list fi i=$(( $i + 1 )) done diff --git a/dis/run_pair_convexity.sh b/dis/run_pair_convexity.sh new file mode 100644 index 0000000..a4e204f --- /dev/null +++ b/dis/run_pair_convexity.sh @@ -0,0 +1,184 @@ +#!/bin/bash + +firstCore=$1 +secondCore=$2 +maxJobs=$3 +userRunID=$4 +#template_input=$9 +tacleNames=tacleNames.txt + +if [ $# -lt 7 ]; then + echo "Usage $0 [bench names file] [WSS setings] [cache settings] [--contend]" # [input file]" + exit +fi + +if [ $# -gt 4 ]; then + echo "Using list of benchmarks from $5" + tacleNames=$5 +fi + +if [ $# -gt 5 ]; then + echo "Using WSS settings from $6" + wss_settings=$6 +fi + +if [ $# -gt 6 ]; then + echo "Using cache settings from $7" + cache_settings=$7 +fi +#echo "Using template input from $9" + +if [ "$EUID" -ne 0 ] +then + echo "You need to be root to enable interrupt isolation and real-time execution!" + exit +fi + +echo "Making sure that binaries are up to date..." +while read i; do + make bin/$i +done < $tacleNames +echo "Done. Disabling real-time throttling..." + +# Turn off rt throttling +echo -1 > /proc/sys/kernel/sched_rt_runtime_us +echo "Done. Redirecting all interrupts to core 0..." + +# Redirect all interrupts to core 0 +i=0 +for IRQ in /proc/irq/* +do + # Skip default_smp_affinity + if [ -d $IRQ ]; then + irqList[$i]=$(cat $IRQ/smp_affinity_list) + echo 0 2> /dev/null > $IRQ/smp_affinity_list + fi + i=$(( $i + 1 )) +done + +# Read the names of each benchmark +j=0 +while read i; do + tacleProg[$j]=$i + j=$(( $j + 1 )) +done < $tacleNames + +echo "Done. Checking for wbinvd module..." +if [[ ! -f "/proc/wbinvd" ]]; then + echo "ERROR: wbinvd module not loaded. Exiting..." + exit +fi + +echo "Done. Setting cores $firstCore and $secondCore to 'performance'..." +echo "performance" > /sys/devices/system/cpu/cpu15/cpufreq/scaling_governor +echo "performance" > /sys/devices/system/cpu/cpu31/cpufreq/scaling_governor + +# Enable L3 isolation +echo "Done. Enabling L3 isolation..." +mount -t resctrl resctrl /sys/fs/resctrl +mkdir -p /sys/fs/resctrl/benchmarks +mkdir -p /sys/fs/resctrl/benchmarks2 +echo $firstCore > /sys/fs/resctrl/benchmarks/cpus_list +echo $secondCore > /sys/fs/resctrl/benchmarks2/cpus_list +# Reset global bandwith control and remove L3 from global +echo "L3:0=ffff;1=ffff;2=ffff;3=0000" > /sys/fs/resctrl/schemata +echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/schemata +# Alloc L3 to benchmark +echo "L3:0=0000;1=0000;2=0000;3=ffff" > /sys/fs/resctrl/benchmarks/schemata +echo "L3:0=0000;1=0000;2=0000;3=ffff" > /sys/fs/resctrl/benchmarks2/schemata +echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/benchmarks/schemata +echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/benchmarks2/schemata +echo "Done. Verifying configuration with user..." + +# Generate file name string +# We append to this as we parse the environment settings +runID=$(date +"%b%d-%H") + +# Confirm configuration with user +echo "=== Global Config ===" +cat /sys/fs/resctrl/schemata +echo "=== Core $firstCore and $secondCore Config ===" +cat /sys/fs/resctrl/benchmarks/schemata +if [[ $8 == "--contend" ]]; then + if [[ ! -f "/playpen/mc2/imx6q-thrasher/thrasher" ]]; then + echo "ERROR: thrasher binary not fonud. Exiting..." + exit + fi + echo "Will run 6 contending tasks" + runID=$runID-c +else + runID=$runID-xc +fi +if uname -a | grep -q "mc2"; then + echo "MC^2 Autodetected. Cache coloring will be enabled." + runID=$runID-i +else + echo "MC^2 not detected. This benchmark requires MC^2! Exiting..." + exit +fi +echo "Results will be saved as $runID-$userRunID-A.txt and $runID-$userRunID-B.txt" +echo "Press enter to confirm environment, Ctrl-C to exit..." +read + +# Start contending tasks +if [[ $8 == "--contend" ]]; then + echo "Done. Starting 6 contending tasks..." + # Run two contending tasks on each other CCX + taskset -c 1 /playpen/mc2/imx6q-thrasher/thrasher & + taskset -c 2 /playpen/mc2/imx6q-thrasher/thrasher & + taskset -c 5 /playpen/mc2/imx6q-thrasher/thrasher & + taskset -c 6 /playpen/mc2/imx6q-thrasher/thrasher & + taskset -c 9 /playpen/mc2/imx6q-thrasher/thrasher & + taskset -c 10 /playpen/mc2/imx6q-thrasher/thrasher & +fi +sleep 1 # Wait for contending tasks to start +echo "Done. Beginning benchmarks..." + +num_tests=$(wc -l < $tacleNames) +for (( ii = 0; ii < $num_tests ; ii++ )) +do + for (( jj = $ii+1; jj < $num_tests ; jj++ )) #loop through programs + do +# Execute the benchmark for each WSS and cache config +while read k; do + echo $k > /sys/fs/resctrl/benchmarks/schemata + while read j; do + echo $j > /sys/fs/resctrl/benchmarks2/schemata + while read i; do + ./gen_input.py matrix inputs/Matrix/in0 $i | chrt -r 97 numactl -m 0 taskset -c $firstCore ./${tacleProg[$ii]} ${tacleProg[$ii]}-$i-$k $maxJobs $firstCore $secondCore ${tacleProg[$jj]}-$i-$j $runID-$userRunID-A 1 > /dev/null & PID1=$!; + ./gen_input.py transitive inputs/Transitive/in0 $i | chrt -r 97 numactl -m 1 taskset -c $secondCore ./${tacleProg[$jj]} ${tacleProg[$jj]}-$i-$j $maxJobs $secondCore $firstCore ${tacleProg[$ii]}-$i-$k $runID-$userRunID-B 2 > /dev/null & PID2=$!; + wait $PID1 $PID2 + done < $wss_settings + echo "Done with $k $j" + done < $cache_settings +done < $cache_settings + +# ./gen_input.py $benchmark $template_input $i | chrt -r 97 numactl -m 0 taskset -c $core ./$benchmark $benchmark-$i-$j $maxJobs $core $runID 1 +# chrt -r 97 numactl -m 0 taskset -c $firstCore ./bin/${tacleProg[$i]} ${tacleProg[$i]} $maxJobs $firstCore $secondCore ${tacleProg[$j]} $runID-$userRunID"-A" 1 & PID1=$!; +# chrt -r 97 numactl -m 1 taskset -c $secondCore ./bin/${tacleProg[$j]} ${tacleProg[$j]} $maxJobs $secondCore $firstCore ${tacleProg[$i]} $runID-$userRunID"-B" 2 & PID2=$!; +# wait $PID1 $PID2 + echo ${tacleProg[$i]} ${tacleProg[$j]} + done + echo COMPLETE: ${tacleProg[$i]} +done + +# End contending tasks +if [[ $8 == "--contend" ]]; then + killall thrasher +fi + +# Remove semaphores from system +# Leaving them won't hurt these tests, but would be messy and is bad practice +# TODO: Do this directly in the benchmarks. They should clean up after themselves +./bin/cleanupSemaphores + +# Put smp_affinty back the way it was +i=0 +for IRQ in /proc/irq/* +do + if [ -d $IRQ ]; then + echo ${irqList[$i]} 2> /dev/null > $IRQ/smp_affinity_list + fi + i=$(( $i + 1 )) +done + diff --git a/dis/setup_mem_and_global.sh b/dis/setup_mem_and_global.sh index 56d6219..6bddb2f 100755 --- a/dis/setup_mem_and_global.sh +++ b/dis/setup_mem_and_global.sh @@ -1,13 +1,22 @@ # Setup group +mount -t resctrl resctrl /sys/fs/resctrl mkdir -p /sys/fs/resctrl/benchmarks echo 15 > /sys/fs/resctrl/benchmarks/cpus_list -# Remove mem from global domain +echo 31 > /sys/fs/resctrl/benchmarks/cpus_list +# Remove mem from global domain and assign to local echo "L3:0=ffff;1=ffff;2=ffff;3=0000" > /sys/fs/resctrl/schemata -# Remove bandwidth from global domain -echo "MB:0=2;1=2;2=2;3=2" > /sys/fs/resctrl/schemata -echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/benchmarks/schemata +echo "L3:0=ffff;1=ffff;2=ffff;3=ffff" > /sys/fs/resctrl/benchmarks/schemata +if [[ $1 == "--bandwith" ]]; then + # Remove bandwidth from global domain + echo "MB:0=2;1=2;2=2;3=2" > /sys/fs/resctrl/schemata + echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/benchmarks/schemata +else + # Disable bandwidth control + echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/schemata + echo "MB:0=2048;1=2048;2=2048;3=2048" > /sys/fs/resctrl/benchmarks/schemata +fi echo "=== Global Config ===" cat /sys/fs/resctrl/schemata -echo "=== Core 15 Config ===" +echo "=== Core 15 & 31 Config ===" cat /sys/fs/resctrl/benchmarks/schemata -- cgit v1.2.2