diff options
| author | Leo Chan <leochanj@live.unc.edu> | 2020-10-24 13:18:05 -0400 |
|---|---|---|
| committer | Joshua Bakita <jbakita@cs.unc.edu> | 2020-10-24 13:18:05 -0400 |
| commit | 54f1032e22f556ccb77b5b7f800189309ec941d7 (patch) | |
| tree | ab3f78924dd9b376857847c69a815e52160520ff /run_case_study.py | |
| parent | 81ef41aff991342bf53c6dab3bec892c628e62c9 (diff) | |
Merge case study updates from sd-vbs branch
Diffstat (limited to 'run_case_study.py')
| -rw-r--r-- | run_case_study.py | 75 |
1 files changed, 50 insertions, 25 deletions
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 | |||
| 2 | import sys | 2 | import sys |
| 3 | import re | 3 | import re |
| 4 | import csv | 4 | import csv |
| 5 | import time | ||
| 5 | import subprocess | 6 | import subprocess |
| 7 | |||
| 8 | all_pids=[] | ||
| 9 | def run(command): | ||
| 10 | print(command) | ||
| 11 | os.system(command) | ||
| 12 | def addpid(pid): | ||
| 13 | with open("./pids.txt", "a") as f: | ||
| 14 | f.write(str(pid) + "\n") | ||
| 15 | |||
| 16 | |||
| 6 | def main(): | 17 | def main(): |
| 18 | with open("./pids.txt", "w") as f: | ||
| 19 | f.write("") | ||
| 20 | |||
| 7 | pathName = sys.argv[1] | 21 | pathName = sys.argv[1] |
| 8 | tacle_pairs_path = "./all_pairs" | 22 | tacle_pairs_path = "./all_pairs" |
| 9 | tacle_baseline_path = "./baseline" | 23 | tacle_baseline_path = "./baseline" |
| @@ -48,7 +62,7 @@ def main(): | |||
| 48 | ccx = "1" | 62 | ccx = "1" |
| 49 | else: | 63 | else: |
| 50 | ccx = "0" | 64 | ccx = "0" |
| 51 | continue | 65 | continue |
| 52 | if(row[0] != "task id" and row[0] != ""): | 66 | if(row[0] != "task id" and row[0] != ""): |
| 53 | row.append(ccx) | 67 | row.append(ccx) |
| 54 | if(threaded): | 68 | if(threaded): |
| @@ -56,7 +70,9 @@ def main(): | |||
| 56 | else: | 70 | else: |
| 57 | row.append("s") | 71 | row.append("s") |
| 58 | levelC.append(row) | 72 | levelC.append(row) |
| 59 | #os.system('echo "L3:0=L3:0=0000,1=0000,2=0000,3=0000" > /sys/fs/resctrl/schemata') | 73 | line += 1 |
| 74 | #os.system('mount -t resctrl resctrl /sys/fs/resctrl') | ||
| 75 | run('sudo echo "L3:0=0000,1=0000,2=0000,3=0000" > sudo /sys/fs/resctrl/schemata') | ||
| 60 | 76 | ||
| 61 | with open(pathName+"/l3alloc.csv", "r") as csv_file: | 77 | with open(pathName+"/l3alloc.csv", "r") as csv_file: |
| 62 | csv_reader = csv.reader(csv_file, delimiter = ',') | 78 | csv_reader = csv.reader(csv_file, delimiter = ',') |
| @@ -69,23 +85,22 @@ def main(): | |||
| 69 | way_C = int(row[3]) | 85 | way_C = int(row[3]) |
| 70 | # Level C allocation | 86 | # Level C allocation |
| 71 | if(core == 1): | 87 | if(core == 1): |
| 72 | os.system("mkdir /sys/fs/resctrl/level-c-ccx-0") | 88 | run("mkdir -p /sys/fs/resctrl/level-c-ccx-0") |
| 73 | 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') | 89 | 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') |
| 74 | 90 | ||
| 75 | if(core == 4): | 91 | if(core == 4): |
| 76 | os.system("mkdir /sys/fs/resctrl/level-c-ccx-1") | 92 | run("mkdir -p /sys/fs/resctrl/level-c-ccx-1") |
| 77 | 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') | 93 | 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') |
| 78 | os.system('mkdir /sys/fs/resctrl/level-ab-core-' + core) | 94 | run('mkdir -p /sys/fs/resctrl/level-ab-core-' + str(core)) |
| 79 | if(core < 4): | 95 | if(core < 4): |
| 80 | 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') | 96 | 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') |
| 81 | else: | 97 | else: |
| 82 | 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') | 98 | 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') |
| 99 | line += 1 | ||
| 100 | run("sudo rm -rf /dev/shm/*") | ||
| 83 | pairID = 0 | 101 | pairID = 0 |
| 84 | i = 0 | 102 | i = 0 |
| 85 | for task in levelAB: | 103 | for task in levelAB: |
| 86 | i+=1 | ||
| 87 | if(i>4): | ||
| 88 | break; | ||
| 89 | task1 = int(task[2]) | 104 | task1 = int(task[2]) |
| 90 | task2 = int(task[5]) | 105 | task2 = int(task[5]) |
| 91 | name1 = all_tasks[task1][2] | 106 | name1 = all_tasks[task1][2] |
| @@ -112,14 +127,15 @@ def main(): | |||
| 112 | binary = "./baseline/bin/" + name1 + arg | 127 | binary = "./baseline/bin/" + name1 + arg |
| 113 | else: | 128 | else: |
| 114 | binary = dis_inputs[name1] + " | ./dis/" + name1 + arg | 129 | binary = dis_inputs[name1] + " | ./dis/" + name1 + arg |
| 115 | proc = subprocess.open([binary + " &"], shell = True) | 130 | proc = subprocess.Popen([binary], shell = True) |
| 131 | #print(binary + " &" ) | ||
| 116 | pid = proc.pid | 132 | pid = proc.pid |
| 117 | os.system("echo " + pid + " > /sys/fs/resctrl/level-ab-core-" + core + "/tasks") | 133 | run("sudo echo " + str(pid) + " > sudo /sys/fs/resctrl/level-ab-core-" + core + "/tasks") |
| 118 | 134 | addpid(pid) | |
| 119 | else: | 135 | else: |
| 120 | pairID += 1 | 136 | pairID += 1 |
| 121 | arg1 = " NULL -1 " + core + " 0 NULL NULL 0 " + str(pairID) + " " + period1 + " " + criticality | 137 | arg1 = " NULL -1 " + core + " 0 NULL NULL 0 " + str(pairID) + " " + period1 + " " + criticality |
| 122 | arg2 = " NULL -1 " + str(int(core)+16) + " 0 NULL NULL 0 " + str(pairID) + " " + period1 + " " + criticality | 138 | arg2 = " NULL -1 " + str(int(core)+16) + " 0 NULL NULL 0 " + str(pairID) + " " + period2 + " " + criticality |
| 123 | 139 | ||
| 124 | if(suite1 == "TACLe"): | 140 | if(suite1 == "TACLe"): |
| 125 | binary1 = "./all_pairs/bin/" + name1 + arg1 | 141 | binary1 = "./all_pairs/bin/" + name1 + arg1 |
| @@ -127,18 +143,22 @@ def main(): | |||
| 127 | else: | 143 | else: |
| 128 | binary1 = dis_inputs[name1] + " | ./dis/" + name1 + "_all" + arg1 | 144 | binary1 = dis_inputs[name1] + " | ./dis/" + name1 + "_all" + arg1 |
| 129 | binary2 = dis_inputs[name2] + " | ./dis/" + name2 + "_all" + arg2 | 145 | binary2 = dis_inputs[name2] + " | ./dis/" + name2 + "_all" + arg2 |
| 130 | proc1 = subprocess.Popen(["numactl --membind=0 " + binary1 + " &"], shell = True) | 146 | proc1 = subprocess.Popen(["sudo numactl --membind=0 " + binary1], shell = True) |
| 131 | proc2 = subprocess.Popen(["numactl --membind=1 " + binary2 + " &"], shell = True) | 147 | proc2 = subprocess.Popen(["sudo numactl --membind=1 " + binary2], shell = True) |
| 132 | pid1 = proc1.pid | 148 | #print("sudo numactl --membind=0 " + binary1 + " &") |
| 133 | pid2 = proc2.pid | 149 | #print("sudo numactl --membind=1 " + binary2 + " &") |
| 134 | 150 | pid1 = proc2.pid + 1 | |
| 135 | os.system("echo " + str(pid1) + " > /sys/fs/resctrl/level-ab-core-" + core + "/tasks") | 151 | pid2 = proc2.pid + 3 |
| 136 | os.system("echo " + str(pid2) + " > /sys/fs/resctrl/level-ab-core-" + core + "/tasks") | ||
| 137 | 152 | ||
| 153 | run("sudo echo " + str(pid1) + " > sudo /sys/fs/resctrl/level-ab-core-" + core + "/tasks") | ||
| 154 | run("sudo echo " + str(pid2) + " > sudo /sys/fs/resctrl/level-ab-core-" + core + "/tasks") | ||
| 155 | addpid(pid1) | ||
| 156 | addpid(pid2) | ||
| 138 | 157 | ||
| 139 | for task in levelC: | 158 | for task in levelC: |
| 159 | continue | ||
| 140 | i+=1 | 160 | i+=1 |
| 141 | if(i>6): | 161 | if(i>8): |
| 142 | break | 162 | break |
| 143 | tid = int(task[0]) | 163 | tid = int(task[0]) |
| 144 | name = all_tasks[tid][2] | 164 | name = all_tasks[tid][2] |
| @@ -159,10 +179,15 @@ def main(): | |||
| 159 | binary = "./baseline/bin/" + name1 + arg | 179 | binary = "./baseline/bin/" + name1 + arg |
| 160 | else: | 180 | else: |
| 161 | binary = dis_inputs[name1] + " | ./dis/" + name1 + "_all" + arg | 181 | binary = dis_inputs[name1] + " | ./dis/" + name1 + "_all" + arg |
| 182 | |||
| 183 | print(binary + " &") | ||
| 162 | proc = subprocess.Popen([binary + " &"], shell = True) | 184 | proc = subprocess.Popen([binary + " &"], shell = True) |
| 163 | pid = proc.pid | 185 | pid = proc.pid |
| 164 | os.system("echo " + str(pid) + " > /sys/fs/resctrl/level-ab-ccx-" + ccx + "/tasks") | 186 | run("sudo echo " + str(pid) + " > sudo /sys/fs/resctrl/level-ab-ccx-" + ccx + "/tasks") |
| 165 | #os.system("/playpen/mc2/liblitmus/release_ts") | 187 | #os.system("/playpen/mc2/liblitmus/release_ts") |
| 166 | #os.system("ls") | 188 | #os.system("ls") |
| 189 | time.sleep(3) | ||
| 167 | if __name__ == "__main__": | 190 | if __name__ == "__main__": |
| 168 | main() | 191 | main() |
| 192 | |||
| 193 | |||
