aboutsummaryrefslogtreecommitdiffstats
path: root/sched_trace/draw.py
diff options
context:
space:
mode:
authorBjörn Brandenburg <bbb@mpi-sws.org>2016-03-24 09:07:41 -0400
committerBjörn Brandenburg <bbb@mpi-sws.org>2016-03-24 09:08:58 -0400
commit2f0330ee24d4fa827cfd56e16bd3ae34b703a9ed (patch)
tree4ac35ca6c85ca0511bd68da18c8329703601f417 /sched_trace/draw.py
parentb0f7162cc216d5ca01175597d8482f2349498802 (diff)
st-draw: optionally include job IDs
Diffstat (limited to 'sched_trace/draw.py')
-rw-r--r--sched_trace/draw.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/sched_trace/draw.py b/sched_trace/draw.py
index 273e17b..4a0386e 100644
--- a/sched_trace/draw.py
+++ b/sched_trace/draw.py
@@ -7,7 +7,7 @@ from math import ceil
7 7
8from .format import EVENTS 8from .format import EVENTS
9 9
10from . import event_time, event_pid, event_cpu 10from . import event_time, event_pid, event_cpu, event_job_id
11 11
12ARROW_LINE_WIDTH = 2 # (pts) 12ARROW_LINE_WIDTH = 2 # (pts)
13ARROW_WIDTH = 12 # (pts) 13ARROW_WIDTH = 12 # (pts)
@@ -60,6 +60,8 @@ TASK_LABEL_COLOR = (0, 0, 0)
60TAG_FONT_SIZE = 12 60TAG_FONT_SIZE = 12
61TAG_COLOR = (0, 0, 0) 61TAG_COLOR = (0, 0, 0)
62 62
63JOB_ID_FONT_SIZE = 10
64
63GRID_WIDTH = 2 65GRID_WIDTH = 2
64MAJOR_TICK_WIDTH = 2 66MAJOR_TICK_WIDTH = 2
65MINOR_TICK_WIDTH = 1 67MINOR_TICK_WIDTH = 1
@@ -84,12 +86,22 @@ def center_text(c, x, y, msg):
84 c.rel_move_to(-width / 2, height) 86 c.rel_move_to(-width / 2, height)
85 c.show_text(msg) 87 c.show_text(msg)
86 88
89def center_text_above(c, x, y, msg):
90 x_bear, y_bear, width, height, x_adv, y_adv = c.text_extents(msg)
91 c.move_to(x, y)
92 c.rel_move_to(-width / 2, 0)
93 c.show_text(msg)
94
87def text_left_align_below(c, x, y, msg): 95def text_left_align_below(c, x, y, msg):
88 x_bear, y_bear, width, height, x_adv, y_adv = c.text_extents(msg) 96 x_bear, y_bear, width, height, x_adv, y_adv = c.text_extents(msg)
89 c.move_to(x, y) 97 c.move_to(x, y)
90 c.rel_move_to(0, height) 98 c.rel_move_to(0, height)
91 c.show_text(msg) 99 c.show_text(msg)
92 100
101def text_left_align_above(c, x, y, msg):
102 c.move_to(x, y)
103 c.show_text(msg)
104
93def vcenter_right_align_text(c, x, y, msg): 105def vcenter_right_align_text(c, x, y, msg):
94 x_bear, y_bear, width, height, x_adv, y_adv = c.text_extents(msg) 106 x_bear, y_bear, width, height, x_adv, y_adv = c.text_extents(msg)
95 c.move_to(x, y) 107 c.move_to(x, y)
@@ -229,6 +241,7 @@ def render(opts, trace):
229 c.set_line_width(ARROW_LINE_WIDTH) 241 c.set_line_width(ARROW_LINE_WIDTH)
230# c.set_line_cap(cairo.LINE_JOIN_ROUND) 242# c.set_line_cap(cairo.LINE_JOIN_ROUND)
231 c.set_line_join(cairo.LINE_JOIN_ROUND) 243 c.set_line_join(cairo.LINE_JOIN_ROUND)
244 c.set_font_size(JOB_ID_FONT_SIZE)
232 arrow_width = ARROW_WIDTH / 2 245 arrow_width = ARROW_WIDTH / 2
233 arrow_height = ARROW_HEIGHT * YRES * yscale 246 arrow_height = ARROW_HEIGHT * YRES * yscale
234 for rec in trace.events_in_range_of_type(opts.start, opts.end, 'ST_RELEASE'): 247 for rec in trace.events_in_range_of_type(opts.start, opts.end, 'ST_RELEASE'):
@@ -244,6 +257,10 @@ def render(opts, trace):
244 c.rel_line_to(arrow_width, arrow_width) 257 c.rel_line_to(arrow_width, arrow_width)
245 c.stroke() 258 c.stroke()
246 259
260 if opts.show_job_ids:
261 text_left_align_above(c, rel + 4, y - arrow_height - 4,
262 "%d" % event_job_id(rec))
263
247 dl = xpos(rec[-1]) 264 dl = xpos(rec[-1])
248 c.new_path() 265 c.new_path()
249 c.move_to(dl, y - arrow_height - (GRID_WIDTH - 1)) 266 c.move_to(dl, y - arrow_height - (GRID_WIDTH - 1))
@@ -253,6 +270,7 @@ def render(opts, trace):
253 c.rel_line_to(arrow_width, -arrow_width) 270 c.rel_line_to(arrow_width, -arrow_width)
254 c.stroke() 271 c.stroke()
255 272
273
256 if opts.verbose: 274 if opts.verbose:
257 print 'done.' 275 print 'done.'
258 print '[II] Drawing job completions...', 276 print '[II] Drawing job completions...',
@@ -270,6 +288,10 @@ def render(opts, trace):
270 c.rel_line_to(2 * arrow_width, 0) 288 c.rel_line_to(2 * arrow_width, 0)
271 c.stroke() 289 c.stroke()
272 290
291 if opts.show_job_ids:
292 text_left_align_above(c, x + 4, y - arrow_height - 4,
293 "%d" % event_job_id(rec))
294
273 if opts.verbose: 295 if opts.verbose:
274 print 'done.' 296 print 'done.'
275 print '[II] Drawing job suspensions...', 297 print '[II] Drawing job suspensions...',