aboutsummaryrefslogtreecommitdiffstats
path: root/parse
diff options
context:
space:
mode:
Diffstat (limited to 'parse')
-rw-r--r--parse/dir_map.py2
-rw-r--r--parse/ft.py14
-rw-r--r--parse/sched.py8
-rw-r--r--parse/tuple_table.py3
4 files changed, 19 insertions, 8 deletions
diff --git a/parse/dir_map.py b/parse/dir_map.py
index 1c17f40..601dd3b 100644
--- a/parse/dir_map.py
+++ b/parse/dir_map.py
@@ -46,7 +46,7 @@ class DirMap(object):
46 46
47 def remove_childless(self): 47 def remove_childless(self):
48 def remove_childless2(node): 48 def remove_childless2(node):
49 for key, child in node: 49 for key, child in node.children.items():
50 remove_childless2(child) 50 remove_childless2(child)
51 if not (child.children or child.values): 51 if not (child.children or child.values):
52 node.children.pop(key) 52 node.children.pop(key)
diff --git a/parse/ft.py b/parse/ft.py
index 5293b00..19453d1 100644
--- a/parse/ft.py
+++ b/parse/ft.py
@@ -3,6 +3,7 @@ import numpy as np
3import os 3import os
4import re 4import re
5import shutil as sh 5import shutil as sh
6import sys
6import subprocess 7import subprocess
7 8
8from point import Measurement,Type 9from point import Measurement,Type
@@ -28,7 +29,6 @@ def parse_overhead(result, overhead_bin, overhead, cycles, out_dir, err_file):
28 raise Exception("Failed (%d) with command: %s" % (ret, " ".join(cmd))) 29 raise Exception("Failed (%d) with command: %s" % (ret, " ".join(cmd)))
29 if not size: 30 if not size:
30 os.remove(ovh_fname) 31 os.remove(ovh_fname)
31
32 if size and not ret: 32 if size and not ret:
33 # Map and sort file for stats 33 # Map and sort file for stats
34 data = np.memmap(ovh_fname, dtype="float32", mode='c') 34 data = np.memmap(ovh_fname, dtype="float32", mode='c')
@@ -47,19 +47,22 @@ def parse_overhead(result, overhead_bin, overhead, cycles, out_dir, err_file):
47 47
48def sort_ft(ft_file, err_file, out_dir): 48def sort_ft(ft_file, err_file, out_dir):
49 '''Create and return file with sorted overheads from @ft_file.''' 49 '''Create and return file with sorted overheads from @ft_file.'''
50 out_fname = "{}/{}".format("%s/%s" % (os.getcwd(), out_dir), FT_SORTED_NAME) 50 out_fname = "{}/{}".format(out_dir, FT_SORTED_NAME)
51 51
52 # Sort happens in-place 52 # Sort happens in-place
53 sh.copyfile(ft_file, out_fname) 53 sh.copyfile(ft_file, out_fname)
54 cmd = [conf.BINS['ftsort'], out_fname] 54 cmd = [conf.BINS['ftsort'], out_fname]
55 ret = subprocess.call(cmd, cwd="%s/%s" % (os.getcwd(), out_dir), stderr=err_file, stdout=err_file)
56 55
56 ret = subprocess.call(cmd, cwd=out_dir, stderr=err_file, stdout=err_file)
57 if ret: 57 if ret:
58 raise Exception("Sort failed with command: %s" % " ".join(cmd)) 58 raise Exception("Sort failed (%d) with command: %s" % (ret, " ".join(cmd)))
59 59
60 return out_fname 60 return out_fname
61 61
62def extract_ft_data(result, data_dir, work_dir, cycles): 62def extract_ft_data(result, data_dir, work_dir, cycles):
63 data_dir = os.path.abspath(data_dir)
64 work_dir = os.path.abspath(work_dir)
65
63 freg = conf.FILES['ft_data'] + "$" 66 freg = conf.FILES['ft_data'] + "$"
64 bins = [f for f in os.listdir(data_dir) if re.match(freg, f)] 67 bins = [f for f in os.listdir(data_dir) if re.match(freg, f)]
65 68
@@ -67,6 +70,9 @@ def extract_ft_data(result, data_dir, work_dir, cycles):
67 return False 70 return False
68 71
69 bin_file = "{}/{}".format(data_dir, bins[0]) 72 bin_file = "{}/{}".format(data_dir, bins[0])
73 if not os.path.getsize(bin_file):
74 sys.stderr.write("Empty feather trace file %s!" % bin_file)
75 return False
70 76
71 with open("%s/%s" % (work_dir, FT_ERR_NAME), 'w') as err_file: 77 with open("%s/%s" % (work_dir, FT_ERR_NAME), 'w') as err_file:
72 sorted_bin = sort_ft(bin_file, err_file, work_dir) 78 sorted_bin = sort_ft(bin_file, err_file, work_dir)
diff --git a/parse/sched.py b/parse/sched.py
index ba0df5e..2da0149 100644
--- a/parse/sched.py
+++ b/parse/sched.py
@@ -2,6 +2,7 @@ import config.config as conf
2import os 2import os
3import re 3import re
4import struct 4import struct
5import sys
5import subprocess 6import subprocess
6 7
7from collections import defaultdict,namedtuple 8from collections import defaultdict,namedtuple
@@ -66,6 +67,10 @@ def register_record(name, id, method, fmt, fields):
66def make_iterator(fname): 67def make_iterator(fname):
67 '''Iterate over (parsed record, processing method) in a 68 '''Iterate over (parsed record, processing method) in a
68 sched-trace file.''' 69 sched-trace file.'''
70 if not os.path.getsize(fname):
71 sys.stderr.write("Empty sched_trace file %s!" % fname)
72 return
73
69 f = open(fname, 'rb') 74 f = open(fname, 'rb')
70 max_type = len(record_map) 75 max_type = len(record_map)
71 76
@@ -182,4 +187,7 @@ def extract_sched_data(result, data_dir, work_dir):
182 187
183 # Summarize value groups 188 # Summarize value groups
184 for name, data in stat_data.iteritems(): 189 for name, data in stat_data.iteritems():
190 if not data:
191 continue
185 result[name] = Measurement(str(name)).from_array(data) 192 result[name] = Measurement(str(name)).from_array(data)
193
diff --git a/parse/tuple_table.py b/parse/tuple_table.py
index 86baa08..ee94772 100644
--- a/parse/tuple_table.py
+++ b/parse/tuple_table.py
@@ -3,8 +3,6 @@ from collections import defaultdict,namedtuple
3from point import SummaryPoint,Type 3from point import SummaryPoint,Type
4from dir_map import DirMap 4from dir_map import DirMap
5from col_map import ColMap,ColMapBuilder 5from col_map import ColMap,ColMapBuilder
6
7
8from pprint import pprint 6from pprint import pprint
9 7
10class TupleTable(object): 8class TupleTable(object):
@@ -88,7 +86,6 @@ class ReducedTupleTable(TupleTable):
88 self.__add_to_dirmap(dir_map, col, kv, point) 86 self.__add_to_dirmap(dir_map, col, kv, point)
89 87
90 dir_map.remove_childless() 88 dir_map.remove_childless()
91 print("wrote: %s" % self)
92 return dir_map 89 return dir_map
93 90
94 @staticmethod 91 @staticmethod