diff options
| -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 | |||
| 297 | 297 | ||
| 298 | def extents(options, xscale, trace): | 298 | def extents(options, xscale, trace): |
| 299 | start = min(trace.start.keys()) | 299 | start = min(trace.start.keys()) |
| 300 | end = max(trace.end.keys()) | 300 | end = start |
| 301 | 301 | ||
| 302 | w = int ((end - start) * sec_w_base * xscale) + 2*off_x | 302 | processes = 0 |
| 303 | h = proc_h * len(trace.processes) + header_h + 2 * off_y | 303 | for proc in trace.processes: |
| 304 | if not options.app_options.show_all and \ | ||
| 305 | trace.processes[proc][1] - trace.processes[proc][0] < options.app_options.mintime: | ||
| 306 | continue | ||
| 307 | |||
| 308 | if trace.processes[proc][1] > end: | ||
| 309 | end = trace.processes[proc][1] | ||
| 310 | processes += 1 | ||
| 311 | |||
| 312 | w = int ((end - start) * sec_w_base * xscale) + 2 * off_x | ||
| 313 | h = proc_h * processes + header_h + 2 * off_y | ||
| 304 | 314 | ||
| 305 | return (w, h) | 315 | return (w, h) |
| 306 | 316 | ||
| @@ -419,6 +429,9 @@ def render_processes_chart(ctx, options, trace, curr_y, w, h, sec_w): | |||
| 419 | offset = min(trace.start.keys()) | 429 | offset = min(trace.start.keys()) |
| 420 | for s in sorted(trace.start.keys()): | 430 | for s in sorted(trace.start.keys()): |
| 421 | for val in sorted(trace.start[s]): | 431 | for val in sorted(trace.start[s]): |
| 432 | if not options.app_options.show_all and \ | ||
| 433 | trace.processes[val][1] - s < options.app_options.mintime: | ||
| 434 | continue | ||
| 422 | task = val.split(":")[1] | 435 | task = val.split(":")[1] |
| 423 | #print val | 436 | #print val |
| 424 | #print trace.processes[val][1] | 437 | #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): | |||
| 121 | 121 | ||
| 122 | def show_toggled(self, button): | 122 | def show_toggled(self, button): |
| 123 | self.options.app_options.show_all = button.get_property ('active') | 123 | self.options.app_options.show_all = button.get_property ('active') |
| 124 | self.chart_width, self.chart_height = draw.extents(self.options, self.xscale, self.trace) | ||
| 125 | self._set_scroll_adjustments(self.hadj, self.vadj) | ||
| 124 | self.queue_draw() | 126 | self.queue_draw() |
| 125 | 127 | ||
| 126 | POS_INCREMENT = 100 | 128 | 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(): | |||
| 55 | # parser.add_option("--show-pid", action="store_true", dest="show_pid", default=False, | 55 | # parser.add_option("--show-pid", action="store_true", dest="show_pid", default=False, |
| 56 | # help="show process ids in the bootchart as 'processname [pid]'") | 56 | # help="show process ids in the bootchart as 'processname [pid]'") |
| 57 | parser.add_option("--show-all", action="store_true", dest="show_all", default=False, | 57 | parser.add_option("--show-all", action="store_true", dest="show_all", default=False, |
| 58 | help="show all process information in the bootchart as '/process/path/exe [pid] [args]'") | 58 | help="show all processes in the chart") |
| 59 | # parser.add_option("--crop-after", dest="crop_after", metavar="PROCESS", default=None, | 59 | # parser.add_option("--crop-after", dest="crop_after", metavar="PROCESS", default=None, |
| 60 | # help="crop chart when idle after PROCESS is started") | 60 | # help="crop chart when idle after PROCESS is started") |
| 61 | # parser.add_option("--annotate", action="append", dest="annotate", metavar="PROCESS", default=None, | 61 | # 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: | |||
| 50 | self.parent_map = None | 50 | self.parent_map = None |
| 51 | self.mem_stats = None | 51 | self.mem_stats = None |
| 52 | 52 | ||
| 53 | parse_paths (writer, self, paths, options.mintime) | 53 | parse_paths (writer, self, paths) |
| 54 | if not self.valid(): | 54 | if not self.valid(): |
| 55 | raise ParseError("empty state: '%s' does not contain a valid bootchart" % ", ".join(paths)) | 55 | raise ParseError("empty state: '%s' does not contain a valid bootchart" % ", ".join(paths)) |
| 56 | 56 | ||
| @@ -630,7 +630,7 @@ def get_num_cpus(headers): | |||
| 630 | return 1 | 630 | return 1 |
| 631 | return max (int(mat.group(1)), 1) | 631 | return max (int(mat.group(1)), 1) |
| 632 | 632 | ||
| 633 | def _do_parse(writer, state, filename, file, mintime): | 633 | def _do_parse(writer, state, filename, file): |
| 634 | writer.info("parsing '%s'" % filename) | 634 | writer.info("parsing '%s'" % filename) |
| 635 | t1 = clock() | 635 | t1 = clock() |
| 636 | paths = filename.split("/") | 636 | paths = filename.split("/") |
| @@ -643,7 +643,7 @@ def _do_parse(writer, state, filename, file, mintime): | |||
| 643 | start = int(float(line.split()[-1])) | 643 | start = int(float(line.split()[-1])) |
| 644 | elif line.startswith("Ended:"): | 644 | elif line.startswith("Ended:"): |
| 645 | end = int(float(line.split()[-1])) | 645 | end = int(float(line.split()[-1])) |
| 646 | if start and end and (end - start) >= mintime: | 646 | if start and end: |
| 647 | k = pn + ":" + task | 647 | k = pn + ":" + task |
| 648 | state.processes[pn + ":" + task] = [start, end] | 648 | state.processes[pn + ":" + task] = [start, end] |
| 649 | if start not in state.start: | 649 | if start not in state.start: |
| @@ -658,14 +658,14 @@ def _do_parse(writer, state, filename, file, mintime): | |||
| 658 | writer.info(" %s seconds" % str(t2-t1)) | 658 | writer.info(" %s seconds" % str(t2-t1)) |
| 659 | return state | 659 | return state |
| 660 | 660 | ||
| 661 | def parse_file(writer, state, filename, mintime): | 661 | def parse_file(writer, state, filename): |
| 662 | if state.filename is None: | 662 | if state.filename is None: |
| 663 | state.filename = filename | 663 | state.filename = filename |
| 664 | basename = os.path.basename(filename) | 664 | basename = os.path.basename(filename) |
| 665 | with open(filename, "rb") as file: | 665 | with open(filename, "rb") as file: |
| 666 | return _do_parse(writer, state, filename, file, mintime) | 666 | return _do_parse(writer, state, filename, file) |
| 667 | 667 | ||
| 668 | def parse_paths(writer, state, paths, mintime): | 668 | def parse_paths(writer, state, paths): |
| 669 | for path in paths: | 669 | for path in paths: |
| 670 | if state.filename is None: | 670 | if state.filename is None: |
| 671 | state.filename = path | 671 | state.filename = path |
| @@ -676,7 +676,7 @@ def parse_paths(writer, state, paths, mintime): | |||
| 676 | #state.filename = path | 676 | #state.filename = path |
| 677 | if os.path.isdir(path): | 677 | if os.path.isdir(path): |
| 678 | files = sorted([os.path.join(path, f) for f in os.listdir(path)]) | 678 | files = sorted([os.path.join(path, f) for f in os.listdir(path)]) |
| 679 | state = parse_paths(writer, state, files, mintime) | 679 | state = parse_paths(writer, state, files) |
| 680 | elif extension in [".tar", ".tgz", ".gz"]: | 680 | elif extension in [".tar", ".tgz", ".gz"]: |
| 681 | if extension == ".gz": | 681 | if extension == ".gz": |
| 682 | root, extension = os.path.splitext(root) | 682 | root, extension = os.path.splitext(root) |
| @@ -695,7 +695,7 @@ def parse_paths(writer, state, paths, mintime): | |||
| 695 | if tf != None: | 695 | if tf != None: |
| 696 | tf.close() | 696 | tf.close() |
| 697 | else: | 697 | else: |
| 698 | state = parse_file(writer, state, path, mintime) | 698 | state = parse_file(writer, state, path) |
| 699 | return state | 699 | return state |
| 700 | 700 | ||
| 701 | def split_res(res, n): | 701 | def split_res(res, n): |
