summaryrefslogtreecommitdiffstats
path: root/run_case_study.py
diff options
context:
space:
mode:
authorLeo Chan <leochanj@live.unc.edu>2020-10-24 13:18:05 -0400
committerJoshua Bakita <jbakita@cs.unc.edu>2020-10-24 13:18:05 -0400
commit54f1032e22f556ccb77b5b7f800189309ec941d7 (patch)
treeab3f78924dd9b376857847c69a815e52160520ff /run_case_study.py
parent81ef41aff991342bf53c6dab3bec892c628e62c9 (diff)
Merge case study updates from sd-vbs branch
Diffstat (limited to 'run_case_study.py')
-rw-r--r--run_case_study.py75
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
2import sys 2import sys
3import re 3import re
4import csv 4import csv
5import time
5import subprocess 6import subprocess
7
8all_pids=[]
9def run(command):
10 print(command)
11 os.system(command)
12def addpid(pid):
13 with open("./pids.txt", "a") as f:
14 f.write(str(pid) + "\n")
15
16
6def main(): 17def 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)
167if __name__ == "__main__": 190if __name__ == "__main__":
168 main() 191 main()
192
193