pybootchartgui: split the output chart into multiple ones

Split the output chart into multiple ones to make it more readable, it
only works with "-o path", which means that it doesn't work if the user
doesn't want to save the chart to the disk. For example:

$ ./pybootchartgui.py /path/to/tmp/buildstats/core-image-sato-qemux86/201205301810/ -f svg -s 5 -o /tmp/
bootchart written to /tmp/bootchart_1.svg
bootchart written to /tmp/bootchart_2.svg
bootchart written to /tmp/bootchart_3.svg
bootchart written to /tmp/bootchart_4.svg
bootchart written to /tmp/bootchart_5.svg

[YOCTO #2403]

(From OE-Core rev: 04a34899e1c15a70babd97a3a59ccb9f8af05bad)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Robert Yang
2012-06-06 14:10:11 +08:00
committed by Richard Purdie
parent bc5b86f025
commit 0ad3f75432
2 changed files with 48 additions and 2 deletions

View File

@@ -226,3 +226,39 @@ def parse(paths, prune):
#monitored_app = state.headers.get("profile.process")
#proc_tree = ProcessTree(state.ps_stats, monitored_app, prune)
return state
def split_res(res, n):
""" Split the res into n pieces """
res_list = []
if n > 1:
s_list = sorted(res.start.keys())
frag_size = len(s_list) / float(n)
# Need the top value
if frag_size > int(frag_size):
frag_size = int(frag_size + 1)
else:
frag_size = int(frag_size)
start = 0
end = frag_size
while start < end:
state = ParserState()
for i in range(start, end):
# Add these lines for reference
#state.processes[pn + ":" + task] = [start, end]
#state.start[start] = pn + ":" + task
#state.end[end] = pn + ":" + task
p = res.start[s_list[i]]
s = s_list[i]
e = res.processes[p][1]
state.processes[p] = [s, e]
state.start[s] = p
state.end[e] = p
start = end
end = end + frag_size
if end > len(s_list):
end = len(s_list)
res_list.append(state)
else:
res_list.append(res)
return res_list