118 lines
3.9 KiB
Python
118 lines
3.9 KiB
Python
import sys
|
|
import os
|
|
import re
|
|
import subprocess
|
|
import collections
|
|
|
|
|
|
def load_folder(
|
|
mydict,
|
|
foldername,
|
|
folderbase):
|
|
rootfolder = '{0}/{1}'.format(folderbase, foldername)
|
|
folders = [f for f in os.listdir(rootfolder)
|
|
if os.path.isdir('{0}/{1}'.format(rootfolder, f))]
|
|
while len(folders) > 0:
|
|
folder = folders.pop()
|
|
folder_path = '{0}/{1}'.format(rootfolder, folder)
|
|
thrpt_folders = [f for f in os.listdir(folder_path)
|
|
if os.path.isdir('{0}/{1}'.format(folder_path, f))]
|
|
for thrpt in thrpt_folders:
|
|
thrpt_folder_path = '{0}/{1}'.format(folder_path, thrpt)
|
|
files = [f for f in os.listdir(thrpt_folder_path)
|
|
if 'result_overview.csv' in f]
|
|
if len(files) == 1:
|
|
mydict[folder][thrpt[:-4]] = 1
|
|
|
|
# construct dict
|
|
mydict = collections.defaultdict(lambda: collections.defaultdict(int))
|
|
|
|
# folder name
|
|
foldername = 'low_thrpt_tests'
|
|
folderbase = '/Users/yanzi/GDrive/UCSB/Projects/Offloading_2017/Data/'
|
|
|
|
# get files
|
|
# fetchfile(foldername)
|
|
|
|
# load
|
|
load_folder(mydict, foldername, folderbase)
|
|
|
|
for method in sorted(mydict.keys()):
|
|
outf = open(
|
|
'{0}/{1}/result_summary_{2}.csv'.format(
|
|
folderbase, foldername, method), 'wb')
|
|
outf.write(
|
|
'#thrpt(Mbps),avg_total_pwr(mW),' +
|
|
'avg_cpu_pwr(mW),avg_cpu_util(%),avg_wifi_pwr(mW),' +
|
|
'avg_total_energy(mJ),avg_cpu_energy(mJ),' +
|
|
'avg_time(s),avg_thrpt(Mbps),' +
|
|
'user,nice,system,iowait,irq,softirq\n')
|
|
thrpts = [float(x) for x in mydict[method].keys()]
|
|
for thrpt in sorted(thrpts):
|
|
filepath = '{0}/{1}/{2}/{3:.1f}Mbps/result_overview.csv'.format(
|
|
folderbase, foldername, method, thrpt)
|
|
if not os.path.isfile(filepath):
|
|
print "something is wrong, {0} does not exist".format(filepath)
|
|
with open(filepath, 'rU') as f:
|
|
contents = f.readlines()
|
|
avg_total_pwr = 0
|
|
avg_cpu_pwr = 0
|
|
avg_cpu_util = 0
|
|
avg_wifi_pwr = 0
|
|
avg_total_energy = 0
|
|
avg_cpu_energy = 0
|
|
avg_time = 0
|
|
avg_thrpt = 0
|
|
user = 0
|
|
nice = 0
|
|
system = 0
|
|
iowait = 0
|
|
irq = 0
|
|
softirq = 0
|
|
counter = 0
|
|
for line in contents:
|
|
if '#' in line:
|
|
continue
|
|
tmp = line.split(',')
|
|
avg_total_pwr += float(tmp[4])
|
|
avg_cpu_pwr += float(tmp[8])
|
|
avg_cpu_util += float(tmp[13])
|
|
avg_total_energy += float(tmp[2])
|
|
avg_cpu_energy += float(tmp[6])
|
|
avg_time += float(tmp[3])
|
|
avg_thrpt += float(tmp[1])
|
|
user += float(tmp[19])
|
|
nice += float(tmp[20])
|
|
system += float(tmp[21])
|
|
iowait += float(tmp[22])
|
|
irq += float(tmp[23])
|
|
softirq += float(tmp[24])
|
|
counter += 1
|
|
if len(tmp) > 15:
|
|
avg_wifi_pwr += float(tmp[16])
|
|
if not counter == 0:
|
|
avg_total_pwr /= counter
|
|
avg_cpu_pwr /= counter
|
|
avg_cpu_util /= counter
|
|
avg_wifi_pwr /= counter
|
|
avg_total_energy /= counter
|
|
avg_cpu_energy /= counter
|
|
avg_time /= counter
|
|
avg_thrpt /= counter
|
|
user /= counter
|
|
nice /= counter
|
|
system /= counter
|
|
iowait /= counter
|
|
irq /= counter
|
|
softirq /= counter
|
|
outf.write('{0},{1:.4f},{2:.4f},{3:.4f},{4:.4f},'.format(
|
|
thrpt, avg_total_pwr,
|
|
avg_cpu_pwr, avg_cpu_util, avg_wifi_pwr))
|
|
outf.write('{0:.4f},{1:.4f},{2:.4f},{3:.4f},'.format(
|
|
avg_total_energy, avg_cpu_energy,
|
|
avg_time, avg_thrpt))
|
|
outf.write('{0:.4f},{1:.4f},{2:.4f},{3:.4f},{4:.4f},{5:.4f}\n'.format(
|
|
user, nice, system, iowait,
|
|
irq, softirq))
|
|
outf.close()
|