summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-11-19 15:03:09 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-11-19 15:18:04 +0000
commit30001153d3ce7dadf8f1ec79e634a638a9994518 (patch)
tree99e0bd95b129cd8560012ed7251b41249a4e81a8 /scripts
parent220b071fd8d1cc6bdbca58f75489e3c9b34921ca (diff)
downloadopenembedded-core-30001153d3ce7dadf8f1ec79e634a638a9994518.tar.gz
openembedded-core-30001153d3ce7dadf8f1ec79e634a638a9994518.tar.bz2
openembedded-core-30001153d3ce7dadf8f1ec79e634a638a9994518.zip
scripts/pybootchart: Allow minimum task length to be configured from the commandline
Rather than hardcode the value of "8", allow the minimum task length to be configured from the commandline using the -m option. "-m 0" means all tasks will be graphed. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/pybootchartgui/pybootchartgui/main.py4
-rw-r--r--scripts/pybootchartgui/pybootchartgui/parsing.py18
2 files changed, 12 insertions, 10 deletions
diff --git a/scripts/pybootchartgui/pybootchartgui/main.py b/scripts/pybootchartgui/pybootchartgui/main.py
index e70ab13661..e22636c23e 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 a0f6e8e0eb..6343fd5a7b 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")