rib/gputop

Better support for pausing metrics and being able to zoom into smaller details

Closed this issue · 1 comments

rib commented

Currently if we pause the capture of metrics then if we change the zoom level we loose the contents of the trace graphs.

There's currently also a threshold that stops us from zooming in to less than a one second range. For live data that seems like a reasonable limit since things would be flying by to fast to be useful any closer than that.

With data capture paused though then zooming in closer would certainly be interesting to see the details of what's happening within individual frames. The resolution we can capture metrics from the HW would certainly allow for a much closer zoom level than makes sense for the live view.

To start with I'd imagine that we could introduce client-side buffering of the websocket i915-perf messages and then while OA capturing is paused we'd replay these buffered messages in a loop.

Notably it's not really enough to just stop updating the series of data plotted on the graph since the process of aggregating metrics takes into account the current zoom level of the graph. A nice benefit to replaying buffered metrics like this is that the UI can continue to allow toggling of per-context filtering, or pid filtering when that is enabled later.

Something to keep in mind here is that we might later want to support server-side buffering, especially if we start allowing much higher hardware sampling frequencies where the bandwidth requirements may be too high.

I think that's basically done in the new UI.

I could like to have a replay mechanism on a different machine, but that would be for a different github issue.