summaryrefslogtreecommitdiffstats
path: root/run_case_study.py
blob: d7156446609344e00c1a32cbcfb782bb637cf66a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import os
import sys
import re
import csv
def main():
    pathName = sys.argv[1]
    all_tasks = []
    levelAB = []
    levelC = []
    with open(pathName+"/all_tasks.csv", "r") as csv_file:
	csv_reader = csv.reader(csv_file, delimiter = ',')
	line = 0
	for row in csv_reader:
	    if line > 0:
		all_tasks.append(row)
            line += 1 
    with open(pathName+"/levelAB_pairs.csv", "r") as csv_file:
	csv_reader = csv.reader(csv_file, delimiter = ',')
	line = 0
	for row in csv_reader:
	    if line > 0:
		levelAB.append(row)
            line += 1
    with open(pathName+"/levelC_threads.csv", "r") as csv_file:
	csv_reader = csv.reader(csv_file, delimiter = ',')
	line = 0
	for row in csv_reader:
	    if line > 0:
		levelC.append(row)
            line += 1
    #os.system('echo "L3:0=L3:0=0000,1=0000,2=0000,3=0000" > /sys/fs/resctrl/schemata')
    
    with open(pathName+"/l3alloc.csv", "r") as csv_file:
	csv_reader = csv.reader(csv_file, delimiter = ',')
	line = 0
	ccx = 0
	for row in csv_reader:
	    if line > 0:
		core = int(row[0])
		way_AB = int(row[1])
		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')
		    
		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-0/schemata')
		os.system('mkdir /sys/fs/resctrl/level-ab-core-' + 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')
		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')
    for task in levelAB:
		
    #os.system("ls")
if __name__ == "__main__":
    main()