summaryrefslogtreecommitdiffstats
path: root/scripts/pybootchartgui/pybootchartgui/parsing.py
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2012-06-06 14:10:11 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-06-15 15:12:42 +0100
commit0ad3f754324eb6337243ca7d28f32b047eca0b51 (patch)
treeaab89171bd438b0d66be71c847aeccf185114bb9 /scripts/pybootchartgui/pybootchartgui/parsing.py
parentbc5b86f025c9c1d9f0e1a58e92fe8c1381c096a5 (diff)
downloadpoky-0ad3f754324eb6337243ca7d28f32b047eca0b51.tar.gz
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>
Diffstat (limited to 'scripts/pybootchartgui/pybootchartgui/parsing.py')
-rw-r--r--scripts/pybootchartgui/pybootchartgui/parsing.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/scripts/pybootchartgui/pybootchartgui/parsing.py b/scripts/pybootchartgui/pybootchartgui/parsing.py
index 11a082941c..c64eba0a4d 100644
--- a/scripts/pybootchartgui/pybootchartgui/parsing.py
+++ b/scripts/pybootchartgui/pybootchartgui/parsing.py
@@ -226,3 +226,39 @@ def parse(paths, prune):
226 #monitored_app = state.headers.get("profile.process") 226 #monitored_app = state.headers.get("profile.process")
227 #proc_tree = ProcessTree(state.ps_stats, monitored_app, prune) 227 #proc_tree = ProcessTree(state.ps_stats, monitored_app, prune)
228 return state 228 return state
229
230def split_res(res, n):
231 """ Split the res into n pieces """
232 res_list = []
233 if n > 1:
234 s_list = sorted(res.start.keys())
235 frag_size = len(s_list) / float(n)
236 # Need the top value
237 if frag_size > int(frag_size):
238 frag_size = int(frag_size + 1)
239 else:
240 frag_size = int(frag_size)
241
242 start = 0
243 end = frag_size
244 while start < end:
245 state = ParserState()
246 for i in range(start, end):
247 # Add these lines for reference
248 #state.processes[pn + ":" + task] = [start, end]
249 #state.start[start] = pn + ":" + task
250 #state.end[end] = pn + ":" + task
251 p = res.start[s_list[i]]
252 s = s_list[i]
253 e = res.processes[p][1]
254 state.processes[p] = [s, e]
255 state.start[s] = p
256 state.end[e] = p
257 start = end
258 end = end + frag_size
259 if end > len(s_list):
260 end = len(s_list)
261 res_list.append(state)
262 else:
263 res_list.append(res)
264 return res_list