def handle_etw_trace(self, etw_file): sea.prepare_environ(self.args) sea_itf = sea.ITT('tools') if sea_itf.can_parse_standard_source(): save = (self.args.input, self.args.output, self.args.trace) (self.args.input, self.args.output, self.args.trace) = (etw_file, etw_file, None) res = get_importers()['etl'](self.args) (self.args.input, self.args.output, self.args.trace) = save else: etw_xml = etw_file + ".xml" proc = subprocess.Popen( 'tracerpt "%s" -of XML -rts -lr -o "%s" -y' % (etw_file, etw_xml), shell=True, stderr=subprocess.PIPE) (out, err) = proc.communicate() if err: return None save = (self.args.input, self.args.output, self.args.trace) (self.args.input, self.args.output, self.args.trace) = (etw_xml, etw_xml, None) res = get_importers()['xml'](self.args) (self.args.input, self.args.output, self.args.trace) = save self.targets += res return res
def handle_dtrace(self, trace): save = (self.args.input, self.args.output, self.args.trace) (self.args.input, self.args.output, self.args.trace) = (trace, trace, None) res = get_importers()['dtrace'](self.args) (self.args.input, self.args.output, self.args.trace) = save self.targets += res return res
def __init__(self, args, gt, callbacks): GPUQueue.__init__(self, args, callbacks) self.cs = None self.ignore_gpu = True # workaround for incomplete dtrace ring self.cpu_packets = {} self.gpu_packets = {} self.thread_names = {} self.gpu_transition = {} self.prepares = {} self.pid_names = {} self.tid_map = {} self.event_tracker = { } # key is ring+channel => key is tracking stamp => [events] self.contexts = {u'0': 'System'} # id to type map callbacks.set_process_name(-1, 'GPU Contexts') self.stat = {} self.decoders = [] decoders = get_decoders() if 'dtrace' in decoders: for decoder in decoders['dtrace']: self.decoders.append(decoder(args, callbacks)) importers = get_importers() self.read_system_info() self.collected_domains = set()
def handle_perf(self, trace): save = (self.args.input, self.args.output, self.args.trace) (self.args.input, self.args.output, self.args.trace) = (trace, trace, None) self.args.sync = [0, 0, 1. / 1000] # perf ticks in ftrace time units res = get_importers()['perf'](self.args) (self.args.input, self.args.output, self.args.trace) = save self.targets += res return res
def handle_etw_trace(self, etw_file): etw_xml = etw_file + ".xml" proc = subprocess.Popen('tracerpt "%s" -of XML -rts -lr -o "%s" -y' % (etw_file, etw_xml), shell=True, stderr=subprocess.PIPE) (out, err) = proc.communicate() if err: return None save = (self.args.input, self.args.output, self.args.trace) (self.args.input, self.args.output, self.args.trace) = (etw_xml, etw_xml, None) res = get_importers()['xml'](self.args) (self.args.input, self.args.output, self.args.trace) = save self.targets += res return res
def handle_ftrace(self, trace): time_sync = [] self.targets.append(self.args.output + '.cut.ftrace') with open(self.targets[-1], 'w') as file: for line in GoogleTrace.read_ftrace_lines(trace, time_sync): file.write(line) sync = self.apply_time_sync(time_sync) save = (self.args.input, self.args.output, self.args.trace) (self.args.input, self.args.output, self.args.trace) = (trace, trace, None) self.args.sync = [0, 0, 1. / 1000] # since ftrace is already set as time sync the events coming from it shall have source time res = get_importers()['ftrace'](self.args) self.args.sync = sync (self.args.input, self.args.output, self.args.trace) = save self.set_sync(*sync) self.targets += res