summaryrefslogtreecommitdiffstats
path: root/run_case_study.py
diff options
context:
space:
mode:
Diffstat (limited to 'run_case_study.py')
-rw-r--r--run_case_study.py52
1 files changed, 34 insertions, 18 deletions
diff --git a/run_case_study.py b/run_case_study.py
index f5a4f61..d2a3922 100644
--- a/run_case_study.py
+++ b/run_case_study.py
@@ -3,6 +3,13 @@ import sys
3import re 3import re
4import csv 4import csv
5import subprocess 5import subprocess
6<<<<<<< HEAD
7def run(command):
8 print(command)
9 os.system(command)
10
11=======
12>>>>>>> rtas20-wip
6def main(): 13def main():
7 pathName = sys.argv[1] 14 pathName = sys.argv[1]
8 tacle_pairs_path = "./all_pairs" 15 tacle_pairs_path = "./all_pairs"
@@ -48,7 +55,7 @@ def main():
48 ccx = "1" 55 ccx = "1"
49 else: 56 else:
50 ccx = "0" 57 ccx = "0"
51 continue 58 continue
52 if(row[0] != "task id" and row[0] != ""): 59 if(row[0] != "task id" and row[0] != ""):
53 row.append(ccx) 60 row.append(ccx)
54 if(threaded): 61 if(threaded):
@@ -56,7 +63,9 @@ def main():
56 else: 63 else:
57 row.append("s") 64 row.append("s")
58 levelC.append(row) 65 levelC.append(row)
59 #os.system('echo "L3:0=L3:0=0000,1=0000,2=0000,3=0000" > /sys/fs/resctrl/schemata') 66 line += 1
67 #os.system('mount -t resctrl resctrl /sys/fs/resctrl')
68 run('sudo echo "L3:0=0000,1=0000,2=0000,3=0000" > sudo /sys/fs/resctrl/schemata')
60 69
61 with open(pathName+"/l3alloc.csv", "r") as csv_file: 70 with open(pathName+"/l3alloc.csv", "r") as csv_file:
62 csv_reader = csv.reader(csv_file, delimiter = ',') 71 csv_reader = csv.reader(csv_file, delimiter = ',')
@@ -69,17 +78,19 @@ def main():
69 way_C = int(row[3]) 78 way_C = int(row[3])
70 # Level C allocation 79 # Level C allocation
71 if(core == 1): 80 if(core == 1):
72 os.system("mkdir /sys/fs/resctrl/level-c-ccx-0") 81 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') 82 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 83
75 if(core == 4): 84 if(core == 4):
76 os.system("mkdir /sys/fs/resctrl/level-c-ccx-1") 85 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') 86 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) 87 run('mkdir -p /sys/fs/resctrl/level-ab-core-' + str(core))
79 if(core < 4): 88 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') 89 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: 90 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') 91 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')
92 line += 1
93 run("sudo rm -rf /dev/shm/*")
83 pairID = 0 94 pairID = 0
84 i = 0 95 i = 0
85 for task in levelAB: 96 for task in levelAB:
@@ -113,13 +124,14 @@ def main():
113 else: 124 else:
114 binary = dis_inputs[name1] + " | ./dis/" + name1 + arg 125 binary = dis_inputs[name1] + " | ./dis/" + name1 + arg
115 proc = subprocess.open([binary + " &"], shell = True) 126 proc = subprocess.open([binary + " &"], shell = True)
127 print(binary + " &" )
116 pid = proc.pid 128 pid = proc.pid
117 os.system("echo " + pid + " > /sys/fs/resctrl/level-ab-core-" + core + "/tasks") 129 run("sudo echo " + pid + " > sudo /sys/fs/resctrl/level-ab-core-" + core + "/tasks")
118 130
119 else: 131 else:
120 pairID += 1 132 pairID += 1
121 arg1 = " NULL -1 " + core + " 0 NULL NULL 0 " + str(pairID) + " " + period1 + " " + criticality 133 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 134 arg2 = " NULL -1 " + str(int(core)+16) + " 0 NULL NULL 0 " + str(pairID) + " " + period2 + " " + criticality
123 135
124 if(suite1 == "TACLe"): 136 if(suite1 == "TACLe"):
125 binary1 = "./all_pairs/bin/" + name1 + arg1 137 binary1 = "./all_pairs/bin/" + name1 + arg1
@@ -127,18 +139,20 @@ def main():
127 else: 139 else:
128 binary1 = dis_inputs[name1] + " | ./dis/" + name1 + "_all" + arg1 140 binary1 = dis_inputs[name1] + " | ./dis/" + name1 + "_all" + arg1
129 binary2 = dis_inputs[name2] + " | ./dis/" + name2 + "_all" + arg2 141 binary2 = dis_inputs[name2] + " | ./dis/" + name2 + "_all" + arg2
130 proc1 = subprocess.Popen(["numactl --membind=0 " + binary1 + " &"], shell = True) 142 proc1 = subprocess.Popen(["sudo numactl --membind=0 " + binary1 + " &"], shell = True)
131 proc2 = subprocess.Popen(["numactl --membind=1 " + binary2 + " &"], shell = True) 143 proc2 = subprocess.Popen(["sudo numactl --membind=1 " + binary2 + " &"], shell = True)
144 print("sudo numactl --membind=0 " + binary1 + " &")
145 print("sudo numactl --membind=1 " + binary2 + " &")
132 pid1 = proc1.pid 146 pid1 = proc1.pid
133 pid2 = proc2.pid 147 pid2 = proc2.pid
134 148
135 os.system("echo " + str(pid1) + " > /sys/fs/resctrl/level-ab-core-" + core + "/tasks") 149 run("sudo echo " + str(pid1) + " > sudo /sys/fs/resctrl/level-ab-core-" + core + "/tasks")
136 os.system("echo " + str(pid2) + " > /sys/fs/resctrl/level-ab-core-" + core + "/tasks") 150 run("sudo echo " + str(pid2) + " > sudo /sys/fs/resctrl/level-ab-core-" + core + "/tasks")
137 151 #exit(1)
138 152
139 for task in levelC: 153 for task in levelC:
140 i+=1 154 i+=1
141 if(i>6): 155 if(i>8):
142 break 156 break
143 tid = int(task[0]) 157 tid = int(task[0])
144 name = all_tasks[tid][2] 158 name = all_tasks[tid][2]
@@ -159,9 +173,11 @@ def main():
159 binary = "./baseline/bin/" + name1 + arg 173 binary = "./baseline/bin/" + name1 + arg
160 else: 174 else:
161 binary = dis_inputs[name1] + " | ./dis/" + name1 + "_all" + arg 175 binary = dis_inputs[name1] + " | ./dis/" + name1 + "_all" + arg
176
177 print(binary + " &")
162 proc = subprocess.Popen([binary + " &"], shell = True) 178 proc = subprocess.Popen([binary + " &"], shell = True)
163 pid = proc.pid 179 pid = proc.pid
164 os.system("echo " + str(pid) + " > /sys/fs/resctrl/level-ab-ccx-" + ccx + "/tasks") 180 run("sudo echo " + str(pid) + " > sudo /sys/fs/resctrl/level-ab-ccx-" + ccx + "/tasks")
165 #os.system("/playpen/mc2/liblitmus/release_ts") 181 #os.system("/playpen/mc2/liblitmus/release_ts")
166 #os.system("ls") 182 #os.system("ls")
167if __name__ == "__main__": 183if __name__ == "__main__":