From 54f1032e22f556ccb77b5b7f800189309ec941d7 Mon Sep 17 00:00:00 2001 From: Leo Chan Date: Sat, 24 Oct 2020 13:18:05 -0400 Subject: Merge case study updates from sd-vbs branch --- run_case_study.py | 75 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 25 deletions(-) (limited to 'run_case_study.py') diff --git a/run_case_study.py b/run_case_study.py index f5a4f61..7da8f4e 100644 --- a/run_case_study.py +++ b/run_case_study.py @@ -2,8 +2,22 @@ import os import sys import re import csv +import time import subprocess + +all_pids=[] +def run(command): + print(command) + os.system(command) +def addpid(pid): + with open("./pids.txt", "a") as f: + f.write(str(pid) + "\n") + + def main(): + with open("./pids.txt", "w") as f: + f.write("") + pathName = sys.argv[1] tacle_pairs_path = "./all_pairs" tacle_baseline_path = "./baseline" @@ -48,7 +62,7 @@ def main(): ccx = "1" else: ccx = "0" - continue + continue if(row[0] != "task id" and row[0] != ""): row.append(ccx) if(threaded): @@ -56,7 +70,9 @@ def main(): else: row.append("s") levelC.append(row) - #os.system('echo "L3:0=L3:0=0000,1=0000,2=0000,3=0000" > /sys/fs/resctrl/schemata') + line += 1 + #os.system('mount -t resctrl resctrl /sys/fs/resctrl') + run('sudo echo "L3:0=0000,1=0000,2=0000,3=0000" > sudo /sys/fs/resctrl/schemata') with open(pathName+"/l3alloc.csv", "r") as csv_file: csv_reader = csv.reader(csv_file, delimiter = ',') @@ -69,23 +85,22 @@ def main(): way_C = int(row[3]) # Level C allocation if(core == 1): - os.system("mkdir /sys/fs/resctrl/level-c-ccx-0") - os.system('echo "L3:0=' + ("%0.4x" % (int("1"*way_C, 2))) + ',1=0000,2=0000,3=0000" > /sys/fs/resctrl/level-c-ccx-0/schemata') + run("mkdir -p /sys/fs/resctrl/level-c-ccx-0") + run('sudo echo "L3:0=' + ("%0.4x" % (int("1"*way_C, 2))) + ',1=0000,2=0000,3=0000" > sudo /sys/fs/resctrl/level-c-ccx-0/schemata') if(core == 4): - os.system("mkdir /sys/fs/resctrl/level-c-ccx-1") - os.system('echo "L3:0=0000, 1=' + ("%0.4x" % (int("1"*way_C, 2))) + ',2=0000,3=0000" > /sys/fs/resctrl/level-c-ccx-1/schemata') - os.system('mkdir /sys/fs/resctrl/level-ab-core-' + core) + run("mkdir -p /sys/fs/resctrl/level-c-ccx-1") + run('sudo echo "L3:0=0000, 1=' + ("%0.4x" % (int("1"*way_C, 2))) + ',2=0000,3=0000" > sudo /sys/fs/resctrl/level-c-ccx-1/schemata') + run('mkdir -p /sys/fs/resctrl/level-ab-core-' + str(core)) if(core < 4): - os.system('echo "L3:0=' + ("%0.4x" % (int("1"*way_C + "0"*(16-way_AB), 2))) + ',1=0000,2=0000,3=0000" > /sys/fs/resctrl/level-ab-core-' + core + '/schemata') + run('sudo echo "L3:0=' + ("%0.4x" % (int("1"*way_AB + "0"*(16-way_AB), 2))) + ',1=0000,2=0000,3=0000" > sudo /sys/fs/resctrl/level-ab-core-' + str(core) + '/schemata') else: - os.system('echo "L3:0=0000,1=' + ("%0.4x" % (int("1"*way_C + "0"*(16-way_AB), 2))) + ',2=0000,3=0000" > /sys/fs/resctrl/level-ab-core-' + core + '/schemata') + run('sudo echo "L3:0=0000,1=' + ("%0.4x" % (int("1"*way_AB + "0"*(16-way_AB), 2))) + ',2=0000,3=0000" > sudo /sys/fs/resctrl/level-ab-core-' + str(core) + '/schemata') + line += 1 + run("sudo rm -rf /dev/shm/*") pairID = 0 i = 0 for task in levelAB: - i+=1 - if(i>4): - break; task1 = int(task[2]) task2 = int(task[5]) name1 = all_tasks[task1][2] @@ -112,14 +127,15 @@ def main(): binary = "./baseline/bin/" + name1 + arg else: binary = dis_inputs[name1] + " | ./dis/" + name1 + arg - proc = subprocess.open([binary + " &"], shell = True) + proc = subprocess.Popen([binary], shell = True) + #print(binary + " &" ) pid = proc.pid - os.system("echo " + pid + " > /sys/fs/resctrl/level-ab-core-" + core + "/tasks") - + run("sudo echo " + str(pid) + " > sudo /sys/fs/resctrl/level-ab-core-" + core + "/tasks") + addpid(pid) else: pairID += 1 arg1 = " NULL -1 " + core + " 0 NULL NULL 0 " + str(pairID) + " " + period1 + " " + criticality - arg2 = " NULL -1 " + str(int(core)+16) + " 0 NULL NULL 0 " + str(pairID) + " " + period1 + " " + criticality + arg2 = " NULL -1 " + str(int(core)+16) + " 0 NULL NULL 0 " + str(pairID) + " " + period2 + " " + criticality if(suite1 == "TACLe"): binary1 = "./all_pairs/bin/" + name1 + arg1 @@ -127,18 +143,22 @@ def main(): else: binary1 = dis_inputs[name1] + " | ./dis/" + name1 + "_all" + arg1 binary2 = dis_inputs[name2] + " | ./dis/" + name2 + "_all" + arg2 - proc1 = subprocess.Popen(["numactl --membind=0 " + binary1 + " &"], shell = True) - proc2 = subprocess.Popen(["numactl --membind=1 " + binary2 + " &"], shell = True) - pid1 = proc1.pid - pid2 = proc2.pid - - os.system("echo " + str(pid1) + " > /sys/fs/resctrl/level-ab-core-" + core + "/tasks") - os.system("echo " + str(pid2) + " > /sys/fs/resctrl/level-ab-core-" + core + "/tasks") + proc1 = subprocess.Popen(["sudo numactl --membind=0 " + binary1], shell = True) + proc2 = subprocess.Popen(["sudo numactl --membind=1 " + binary2], shell = True) + #print("sudo numactl --membind=0 " + binary1 + " &") + #print("sudo numactl --membind=1 " + binary2 + " &") + pid1 = proc2.pid + 1 + pid2 = proc2.pid + 3 + run("sudo echo " + str(pid1) + " > sudo /sys/fs/resctrl/level-ab-core-" + core + "/tasks") + run("sudo echo " + str(pid2) + " > sudo /sys/fs/resctrl/level-ab-core-" + core + "/tasks") + addpid(pid1) + addpid(pid2) for task in levelC: + continue i+=1 - if(i>6): + if(i>8): break tid = int(task[0]) name = all_tasks[tid][2] @@ -159,10 +179,15 @@ def main(): binary = "./baseline/bin/" + name1 + arg else: binary = dis_inputs[name1] + " | ./dis/" + name1 + "_all" + arg + + print(binary + " &") proc = subprocess.Popen([binary + " &"], shell = True) pid = proc.pid - os.system("echo " + str(pid) + " > /sys/fs/resctrl/level-ab-ccx-" + ccx + "/tasks") + run("sudo echo " + str(pid) + " > sudo /sys/fs/resctrl/level-ab-ccx-" + ccx + "/tasks") #os.system("/playpen/mc2/liblitmus/release_ts") #os.system("ls") + time.sleep(3) if __name__ == "__main__": main() + + -- cgit v1.2.2