mirror of
https://git.yoctoproject.org/poky
synced 2026-04-22 15:32:14 +02:00
pybootchartgui: render cpu and io pressure
Add two new, separate charts showing the avg10 and delta total pressure over time for the CPU and IO resources. The height of the avg10 data in each chart represents the percentage of time "some" task was delayed over the specific resource during the last 10 seconds of the build. The height of the delta total data in each chart represents the total time "some" task was delayed since the last sample was collected. If the reduced_proc_pressure data is not present in the buildstats log, then the new charts are not shown at all rather than being present but unpopulated. Note that the delta total graphs may appear "spikey", oscillating from high values to low. This behaviour is fixed in a subsequent commit. (From OE-Core rev: fb9ff46dc3059cb3f4c8df8e4654184c3eab1571) Signed-off-by: Aryaman Gupta <aryaman.gupta@windriver.com> Signed-off-by: Randy MacLeod <randy.macleod@windriver.com> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
ac162116b3
commit
45f1e9d953
@@ -80,6 +80,18 @@ MEM_BUFFERS_COLOR = (0.4, 0.4, 0.4, 0.3)
|
||||
# Swap color
|
||||
MEM_SWAP_COLOR = DISK_TPUT_COLOR
|
||||
|
||||
# avg10 CPU pressure color
|
||||
CPU_PRESSURE_AVG10_COLOR = (0.0, 0.0, 0.0, 1.0)
|
||||
# delta total CPU pressure color
|
||||
CPU_PRESSURE_TOTAL_COLOR = CPU_COLOR
|
||||
# avg10 IO pressure color
|
||||
IO_PRESSURE_AVG10_COLOR = (0.0, 0.0, 0.0, 1.0)
|
||||
# delta total IO pressure color
|
||||
IO_PRESSURE_TOTAL_COLOR = IO_COLOR
|
||||
|
||||
|
||||
|
||||
|
||||
# Process border color.
|
||||
PROC_BORDER_COLOR = (0.71, 0.71, 0.71, 1.0)
|
||||
# Waiting process color.
|
||||
@@ -415,6 +427,71 @@ def render_charts(ctx, options, clip, trace, curr_y, w, h, sec_w):
|
||||
|
||||
curr_y = curr_y + 30 + bar_h
|
||||
|
||||
# render CPU pressure chart
|
||||
if trace.cpu_pressure:
|
||||
draw_legend_line(ctx, "avg10 CPU Pressure", CPU_PRESSURE_AVG10_COLOR, off_x, curr_y+20, leg_s)
|
||||
draw_legend_box(ctx, "delta total CPU Pressure", CPU_PRESSURE_TOTAL_COLOR, off_x + 140, curr_y+20, leg_s)
|
||||
|
||||
# render delta total cpu
|
||||
chart_rect = (off_x, curr_y+30, w, bar_h)
|
||||
if clip_visible (clip, chart_rect):
|
||||
draw_box_ticks (ctx, chart_rect, sec_w)
|
||||
draw_annotations (ctx, proc_tree, trace.times, chart_rect)
|
||||
draw_chart (ctx, CPU_PRESSURE_TOTAL_COLOR, True, chart_rect, \
|
||||
[(sample.time, sample.deltaTotal) for sample in trace.cpu_pressure], \
|
||||
proc_tree, None)
|
||||
|
||||
# render avg10 cpu
|
||||
max_sample = max (trace.cpu_pressure, key = lambda s: s.avg10)
|
||||
if clip_visible (clip, chart_rect):
|
||||
draw_chart (ctx, CPU_PRESSURE_AVG10_COLOR, False, chart_rect, \
|
||||
[(sample.time, sample.avg10) for sample in trace.cpu_pressure], \
|
||||
proc_tree, None)
|
||||
|
||||
pos_x = off_x + ((max_sample.time - proc_tree.start_time) * w / proc_tree.duration)
|
||||
|
||||
shift_x, shift_y = -20, 20
|
||||
if (pos_x < off_x + 245):
|
||||
shift_x, shift_y = 5, 40
|
||||
|
||||
|
||||
label = "%d%%" % (max_sample.avg10)
|
||||
draw_text (ctx, label, CPU_PRESSURE_AVG10_COLOR, pos_x + shift_x, curr_y + shift_y)
|
||||
|
||||
curr_y = curr_y + 30 + bar_h
|
||||
|
||||
# render delta total io
|
||||
if trace.io_pressure:
|
||||
draw_legend_line(ctx, "avg10 I/O Pressure", IO_PRESSURE_AVG10_COLOR, off_x, curr_y+20, leg_s)
|
||||
draw_legend_box(ctx, "delta total I/O Pressure", IO_PRESSURE_TOTAL_COLOR, off_x + 140, curr_y+20, leg_s)
|
||||
|
||||
# render avg10 io
|
||||
chart_rect = (off_x, curr_y+30, w, bar_h)
|
||||
if clip_visible (clip, chart_rect):
|
||||
draw_box_ticks (ctx, chart_rect, sec_w)
|
||||
draw_annotations (ctx, proc_tree, trace.times, chart_rect)
|
||||
draw_chart (ctx, IO_PRESSURE_TOTAL_COLOR, True, chart_rect, \
|
||||
[(sample.time, sample.deltaTotal) for sample in trace.io_pressure], \
|
||||
proc_tree, None)
|
||||
|
||||
# render io pressure
|
||||
max_sample = max (trace.io_pressure, key = lambda s: s.avg10)
|
||||
if clip_visible (clip, chart_rect):
|
||||
draw_chart (ctx, IO_PRESSURE_AVG10_COLOR, False, chart_rect, \
|
||||
[(sample.time, sample.avg10) for sample in trace.io_pressure], \
|
||||
proc_tree, None)
|
||||
|
||||
pos_x = off_x + ((max_sample.time - proc_tree.start_time) * w / proc_tree.duration)
|
||||
|
||||
shift_x, shift_y = -20, 20
|
||||
if (pos_x < off_x + 245):
|
||||
shift_x, shift_y = 5, 40
|
||||
|
||||
label = "%d%%" % (max_sample.avg10)
|
||||
draw_text (ctx, label, IO_PRESSURE_AVG10_COLOR, pos_x + shift_x, curr_y + shift_y)
|
||||
|
||||
curr_y = curr_y + 30 + bar_h
|
||||
|
||||
# render disk space usage
|
||||
#
|
||||
# Draws the amount of disk space used on each volume relative to the
|
||||
|
||||
Reference in New Issue
Block a user