Without vertical zoom, it is not possible to see all CPUs in a trace taken on a larger machine. This patch parameterizes the height and spacing of CPUs so that you can fit more cpus into the screen. Ideally we should dynamically size/space the CPU rectangles with some minimum threshold. Until then, this patch is a stop-gap.
Showing the changes to tools/perf/scripts/python (1 of 1 file). Show all
Unified · Split
| @@ -27,6 +27,11 @@ from perf_trace_context import * · 26 unmodified lines | ||
| 27 | 27 | from Core import * |
| 28 | 28 | |
| 29 | 29 | class RootFrame(wx.Frame): |
| 30 | + Y_OFFSET = 100 | |
| 31 | + CPU_HEIGHT = 100 | |
| 32 | + CPU_SPACE = 50 | |
| 33 | + EVENT_MARKING_WIDTH = 5 | |
| 34 | + | |
| 30 | 35 | def __init__(self, timeslices, parent = None, id = -1, title = "Migration"): |
| 31 | 36 | wx.Frame.__init__(self, parent, id, title) |
| 32 | 37 | |
| @@ -97,8 +102,8 @@ class RootFrame(wx.Frame): · 64 unmodified lines | ||
| 97 | 102 | if width_px == 0: |
| 98 | 103 | return |
| 99 | 104 | |
| 100 | − offset_py = 100 + (cpu * 150) | |
| 101 | − width_py = 100 | |
| 105 | + offset_py = RootFrame.Y_OFFSET + (cpu * (RootFrame.CPU_HEIGHT + RootFrame.CPU_SPACE)) | |
| 106 | + width_py = RootFrame.CPU_HEIGHT | |
| 102 | 107 | |
| 103 | 108 | if cpu in slice.event_cpus: |
| 104 | 109 | rgb = rq.event.color() |
| @@ -107,9 +112,9 @@ class RootFrame(wx.Frame): · 2 unmodified lines | ||
| 107 | 112 | color = wx.Colour(r, g, b) |
| 108 | 113 | brush = wx.Brush(color, wx.SOLID) |
| 109 | 114 | dc.SetBrush(brush) |
| 110 | − dc.DrawRectangle(offset_px, offset_py, width_px, 5) | |
| 111 | − width_py -= 5 | |
| 112 | − offset_py += 5 | |
| 115 | + dc.DrawRectangle(offset_px, offset_py, width_px, RootFrame.EVENT_MARKING_WIDTH) | |
| 116 | + width_py -= RootFrame.EVENT_MARKING_WIDTH | |
| 117 | + offset_py += RootFrame.EVENT_MARKING_WIDTH | |
| 113 | 118 | |
| 114 | 119 | red_power = int(0xff - (0xff * load_rate)) |
| 115 | 120 | color = wx.Colour(0xff, red_power, red_power) |
| @@ -154,11 +159,11 @@ class RootFrame(wx.Frame): · 38 unmodified lines | ||
| 154 | 159 | self.update_rectangles(dc, start, end) |
| 155 | 160 | |
| 156 | 161 | def cpu_from_ypixel(self, y): |
| 157 | − y -= 100 | |
| 158 | − cpu = y / 150 | |
| 159 | − height = y % 150 | |
| 162 | + y -= RootFrame.Y_OFFSET | |
| 163 | + cpu = y / (RootFrame.CPU_HEIGHT + RootFrame.CPU_SPACE) | |
| 164 | + height = y % (RootFrame.CPU_HEIGHT + RootFrame.CPU_SPACE) | |
| 160 | 165 | |
| 161 | − if cpu < 0 or cpu > self.max_cpu or height > 100: | |
| 166 | + if cpu < 0 or cpu > self.max_cpu or height > RootFrame.CPU_HEIGHT: | |
| 162 | 167 | return -1 |
| 163 | 168 | |
| 164 | 169 | return cpu |