From 46c45853f0fbf71fd153bcffacb1807363a1a857 Mon Sep 17 00:00:00 2001 From: Peter Kjellerstedt Date: Thu, 14 Nov 2013 15:11:16 +0000 Subject: pybootchartgui: Make "Show more" show all processes While "Show more" is enabled, all processes are shown, regardless of --mintime. This also has the added benefit of making the first shown bar start at its correct offset from the start time, rather than always starting at 0. (From OE-Core rev: 5f1b8730f90099c0f73a6b08599990ee71e831b5) Signed-off-by: Peter Kjellerstedt Signed-off-by: Richard Purdie --- scripts/pybootchartgui/pybootchartgui/draw.py | 19 ++++++++++++++++--- scripts/pybootchartgui/pybootchartgui/gui.py | 2 ++ scripts/pybootchartgui/pybootchartgui/main.py.in | 2 +- scripts/pybootchartgui/pybootchartgui/parsing.py | 16 ++++++++-------- 4 files changed, 27 insertions(+), 12 deletions(-) (limited to 'scripts/pybootchartgui') diff --git a/scripts/pybootchartgui/pybootchartgui/draw.py b/scripts/pybootchartgui/pybootchartgui/draw.py index a22ac802f7..2aa348ba70 100644 --- a/scripts/pybootchartgui/pybootchartgui/draw.py +++ b/scripts/pybootchartgui/pybootchartgui/draw.py @@ -297,10 +297,20 @@ OPTIONS = None def extents(options, xscale, trace): start = min(trace.start.keys()) - end = max(trace.end.keys()) + end = start - w = int ((end - start) * sec_w_base * xscale) + 2*off_x - h = proc_h * len(trace.processes) + header_h + 2 * off_y + processes = 0 + for proc in trace.processes: + if not options.app_options.show_all and \ + trace.processes[proc][1] - trace.processes[proc][0] < options.app_options.mintime: + continue + + if trace.processes[proc][1] > end: + end = trace.processes[proc][1] + processes += 1 + + w = int ((end - start) * sec_w_base * xscale) + 2 * off_x + h = proc_h * processes + header_h + 2 * off_y return (w, h) @@ -419,6 +429,9 @@ def render_processes_chart(ctx, options, trace, curr_y, w, h, sec_w): offset = min(trace.start.keys()) for s in sorted(trace.start.keys()): for val in sorted(trace.start[s]): + if not options.app_options.show_all and \ + trace.processes[val][1] - s < options.app_options.mintime: + continue task = val.split(":")[1] #print val #print trace.processes[val][1] diff --git a/scripts/pybootchartgui/pybootchartgui/gui.py b/scripts/pybootchartgui/pybootchartgui/gui.py index 11207015d8..7fedd232df 100644 --- a/scripts/pybootchartgui/pybootchartgui/gui.py +++ b/scripts/pybootchartgui/pybootchartgui/gui.py @@ -121,6 +121,8 @@ class PyBootchartWidget(gtk.DrawingArea): def show_toggled(self, button): self.options.app_options.show_all = button.get_property ('active') + self.chart_width, self.chart_height = draw.extents(self.options, self.xscale, self.trace) + self._set_scroll_adjustments(self.hadj, self.vadj) self.queue_draw() POS_INCREMENT = 100 diff --git a/scripts/pybootchartgui/pybootchartgui/main.py.in b/scripts/pybootchartgui/pybootchartgui/main.py.in index 39271865d6..1d70271f72 100644 --- a/scripts/pybootchartgui/pybootchartgui/main.py.in +++ b/scripts/pybootchartgui/pybootchartgui/main.py.in @@ -55,7 +55,7 @@ def _mk_options_parser(): # parser.add_option("--show-pid", action="store_true", dest="show_pid", default=False, # help="show process ids in the bootchart as 'processname [pid]'") parser.add_option("--show-all", action="store_true", dest="show_all", default=False, - help="show all process information in the bootchart as '/process/path/exe [pid] [args]'") + help="show all processes in the chart") # parser.add_option("--crop-after", dest="crop_after", metavar="PROCESS", default=None, # help="crop chart when idle after PROCESS is started") # parser.add_option("--annotate", action="append", dest="annotate", metavar="PROCESS", default=None, diff --git a/scripts/pybootchartgui/pybootchartgui/parsing.py b/scripts/pybootchartgui/pybootchartgui/parsing.py index ed61825d23..daee5932cf 100644 --- a/scripts/pybootchartgui/pybootchartgui/parsing.py +++ b/scripts/pybootchartgui/pybootchartgui/parsing.py @@ -50,7 +50,7 @@ class Trace: self.parent_map = None self.mem_stats = None - parse_paths (writer, self, paths, options.mintime) + parse_paths (writer, self, paths) if not self.valid(): raise ParseError("empty state: '%s' does not contain a valid bootchart" % ", ".join(paths)) @@ -630,7 +630,7 @@ def get_num_cpus(headers): return 1 return max (int(mat.group(1)), 1) -def _do_parse(writer, state, filename, file, mintime): +def _do_parse(writer, state, filename, file): writer.info("parsing '%s'" % filename) t1 = clock() paths = filename.split("/") @@ -643,7 +643,7 @@ def _do_parse(writer, state, filename, file, mintime): start = int(float(line.split()[-1])) elif line.startswith("Ended:"): end = int(float(line.split()[-1])) - if start and end and (end - start) >= mintime: + if start and end: k = pn + ":" + task state.processes[pn + ":" + task] = [start, end] if start not in state.start: @@ -658,14 +658,14 @@ def _do_parse(writer, state, filename, file, mintime): writer.info(" %s seconds" % str(t2-t1)) return state -def parse_file(writer, state, filename, mintime): +def parse_file(writer, state, filename): if state.filename is None: state.filename = filename basename = os.path.basename(filename) with open(filename, "rb") as file: - return _do_parse(writer, state, filename, file, mintime) + return _do_parse(writer, state, filename, file) -def parse_paths(writer, state, paths, mintime): +def parse_paths(writer, state, paths): for path in paths: if state.filename is None: state.filename = path @@ -676,7 +676,7 @@ def parse_paths(writer, state, paths, mintime): #state.filename = path if os.path.isdir(path): files = sorted([os.path.join(path, f) for f in os.listdir(path)]) - state = parse_paths(writer, state, files, mintime) + state = parse_paths(writer, state, files) elif extension in [".tar", ".tgz", ".gz"]: if extension == ".gz": root, extension = os.path.splitext(root) @@ -695,7 +695,7 @@ def parse_paths(writer, state, paths, mintime): if tf != None: tf.close() else: - state = parse_file(writer, state, path, mintime) + state = parse_file(writer, state, path) return state def split_res(res, n): -- cgit v1.2.3-54-g00ecf