diff options
author | Peter Kjellerstedt <pkj@axis.com> | 2013-11-14 15:11:16 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-11-18 12:42:49 +0000 |
commit | 5f1b8730f90099c0f73a6b08599990ee71e831b5 (patch) | |
tree | 0d6b1626527f647ef500ec3bc7f92d432dd3d533 | |
parent | bd0bde6d04fd6cd9f8e7773d68da127144afa7de (diff) | |
download | openembedded-core-5f1b8730f90099c0f73a6b08599990ee71e831b5.tar.gz openembedded-core-5f1b8730f90099c0f73a6b08599990ee71e831b5.tar.bz2 openembedded-core-5f1b8730f90099c0f73a6b08599990ee71e831b5.zip |
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.
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | scripts/pybootchartgui/pybootchartgui/draw.py | 19 | ||||
-rw-r--r-- | scripts/pybootchartgui/pybootchartgui/gui.py | 2 | ||||
-rw-r--r-- | scripts/pybootchartgui/pybootchartgui/main.py.in | 2 | ||||
-rw-r--r-- | scripts/pybootchartgui/pybootchartgui/parsing.py | 16 |
4 files changed, 27 insertions, 12 deletions
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): |