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()