diff options
Diffstat (limited to 'scripts/pybootchartgui')
-rw-r--r-- | scripts/pybootchartgui/pybootchartgui/main.py | 4 | ||||
-rw-r--r-- | scripts/pybootchartgui/pybootchartgui/parsing.py | 18 |
2 files changed, 12 insertions, 10 deletions
diff --git a/scripts/pybootchartgui/pybootchartgui/main.py b/scripts/pybootchartgui/pybootchartgui/main.py index e70ab136611..e22636c23e8 100644 --- a/scripts/pybootchartgui/pybootchartgui/main.py +++ b/scripts/pybootchartgui/pybootchartgui/main.py @@ -19,6 +19,8 @@ def _mk_options_parser(): help="output path (file or directory) where charts are stored") parser.add_option("-s", "--split", dest="num", type=int, default=1, help="split the output chart into <NUM> charts, only works with \"-o PATH\"") + parser.add_option("-m", "--mintime", dest="mintime", type=int, default=8, + help="only tasks longer than this time will be displayed") parser.add_option("-n", "--no-prune", action="store_false", dest="prune", default=True, help="do not prune the process tree") parser.add_option("-q", "--quiet", action="store_true", dest="quiet", default=False, @@ -51,7 +53,7 @@ def main(argv=None): parser.error("insufficient arguments, expected at least one path.") return 2 - res = parsing.parse(args, options.prune) + res = parsing.parse(args, options.prune, options.mintime) if options.interactive or options.output == None: gui.show(res) else: diff --git a/scripts/pybootchartgui/pybootchartgui/parsing.py b/scripts/pybootchartgui/pybootchartgui/parsing.py index a0f6e8e0eb0..6343fd5a7be 100644 --- a/scripts/pybootchartgui/pybootchartgui/parsing.py +++ b/scripts/pybootchartgui/pybootchartgui/parsing.py @@ -170,7 +170,7 @@ class ParserState: _relevant_files = set(["header", "proc_diskstats.log", "proc_ps.log", "proc_stat.log"]) -def _do_parse(state, filename, file): +def _do_parse(state, filename, file, mintime): #print filename #writer.status("parsing '%s'" % filename) paths = filename.split("/") @@ -183,7 +183,7 @@ def _do_parse(state, filename, file): start = int(float(line.split()[-1])) elif line.startswith("Ended:"): end = int(float(line.split()[-1])) - if start and end and (end - start) > 8: + if start and end and (end - start) >= mintime: k = pn + ":" + task state.processes[pn + ":" + task] = [start, end] if start not in state.start: @@ -196,12 +196,12 @@ def _do_parse(state, filename, file): state.end[end].append(pn + ":" + task) return state -def parse_file(state, filename): +def parse_file(state, filename, mintime): basename = os.path.basename(filename) with open(filename, "rb") as file: - return _do_parse(state, filename, file) + return _do_parse(state, filename, file, mintime) -def parse_paths(state, paths): +def parse_paths(state, paths, mintime): for path in paths: root,extension = os.path.splitext(path) if not(os.path.exists(path)): @@ -210,7 +210,7 @@ def parse_paths(state, paths): if os.path.isdir(path): files = [ f for f in [os.path.join(path, f) for f in os.listdir(path)] ] files.sort() - state = parse_paths(state, files) + state = parse_paths(state, files, mintime) elif extension in [".tar", ".tgz", ".tar.gz"]: tf = None try: @@ -223,11 +223,11 @@ def parse_paths(state, paths): if tf != None: tf.close() else: - state = parse_file(state, path) + state = parse_file(state, path, mintime) return state -def parse(paths, prune): - state = parse_paths(ParserState(), paths) +def parse(paths, prune, mintime): + state = parse_paths(ParserState(), paths, mintime) if not state.valid(): raise ParseError("empty state: '%s' does not contain a valid bootchart" % ", ".join(paths)) #monitored_app = state.headers.get("profile.process") |