Commit Graph

1006 Commits

Author SHA1 Message Date
fc0eff6d4b visualizers: add comment about how to add data visualizers 2018-05-20 15:51:35 -07:00
ff37ffa8a4 Update Polish translation 2018-05-20 20:53:24 +02:00
2e54a1766e visualizers: tweak row heights 2018-05-18 17:50:33 +01:00
9059b5f93a theme: add row separator between visualizers 2018-05-18 16:36:37 +01:00
4d6a8d8082 tools: add utility to cat together sysprof streams
This currently isn't installed, but it is useful for joining streams
together when working on sysprof data acquisition. We may want to install
it at some point in the future.

sysprof-cat file1 file2 file3 > out.syscap
2018-05-18 11:29:27 +01:00
7c03499484 writer: add helper to replace time range
This is useful so that we can overwrite the time range in the file when
muxing together multiple streams.
2018-05-18 11:28:15 +01:00
12f627a7bd fps: discover gtk FPS counter and add visualizer row 2018-05-17 20:31:56 +01:00
138f08d4fe line-visualizer: clear line info to visible black 2018-05-17 20:31:29 +01:00
c734f59ba5 mark: use gslice for inferred rect
We can get a little boost by using the gslice allocator for the structs
of the same size.
2018-05-17 19:42:10 +01:00
23a0cebfe2 sources/perf: Disable the broken i915 tracepoints for now.
I need to build a new kernel and test the tracepoints, but disable
these for the moment to prevent people from getting surprising garbage
timelines.
2018-05-17 19:36:01 +01:00
94bb2fba0d visualizer: Make proper rectangles from i915 GPU events.
This reveals that we've got really bogus times from these events.  I
think there are two things here: the begin is the submit time, not the
submit-to-hardware time.  And the end time is retire, which is too
delayed to be really useful.  We need to move i915 over to the
low-level tracepoints.

However, this code proved to be useful for vc4, where I have good
timings.
2018-05-17 19:36:01 +01:00
7f889b487d capture: add doc for new_from_fd 2018-05-17 13:13:36 +01:00
1ef68eeb31 capture: do 24 bit counter identifier checks
Max uint was more than we allow, since we steal the top 8 bits for some
other data. This instead checks for 24-bit and warns if the user tries to
store a counter value that was not registered.
2018-05-17 12:29:04 +01:00
3d14ce4eaa capture: use uint for requested counter id
Also document this thing so it is more obvious what is going on with the
resulting counter ranges.
2018-05-17 12:19:54 +01:00
2282e90165 build: add flatpak manifest
This isn't really meant to be distributed as a flatpak, being that we would
want to have a daemon available to get anything done. But it does make it
easier for people to open Sysprof in Builder and hack on things.
2018-05-17 12:03:33 +01:00
b4d5fdd5e4 writer: clear values before setting counters
We have an annoying issue where we look at all fiends of a counter values
chunk in the counter set frame. So we need those values set to zero. If
we are passed fewer counter values than can fit in the frame, we leave
some of that data uninitialized. This ensures that it is cleared.
2018-05-17 11:38:34 +01:00
851e593ae5 hostinfo: fix cpu/pid parameters for setting cpu counters
We don't need pid here anyway, since we're just passing on counters for the
system itself.
2018-05-17 11:04:23 +01:00
06a5113246 Updated Czech translation 2018-05-17 10:44:40 +02:00
d523fcc024 rectangles: cycle colors
We will still probably want something smarter here, but this gets things
to be more distinguished than black.
2018-05-17 09:05:26 +01:00
896bbaea89 Use Unicode in translatable strings
See https://developer.gnome.org/hig/stable/typography.html
2018-05-16 18:12:56 +02:00
34a21a9611 Update POTFILES.in 2018-05-16 18:07:46 +02:00
9381ae3070 rectangles: add basic tooltip support
We definitely want to do something better, but this at least allows testing
some data which is useful now to see what is going on.
2018-05-16 16:33:46 +01:00
ca5684910f rectangles: improve rectangle positioning 2018-05-16 15:09:33 +01:00
a15eb358ce visualizer: ignore anchor x/y position
We don't need that, and it breaks for things not at index 0,0.
2018-05-16 15:09:20 +01:00
a61703d7e5 sources/perf: Add drm/i915 GPU begin/end times. 2018-05-16 14:27:38 +01:00
a3bda35b28 sources/perf: Capture the CRTC number and MSC for vblank events.
This will help make sense of vblank events in a multi-screen
environment (where there are two streams of vblanks), and hopefully
also useful for correlating to compositor events.
2018-05-16 14:27:33 +01:00
88af69c3ec visualizers: mark fields as private 2018-05-16 12:44:48 +01:00
af3e3b0e2a marks: start on visualizer row data for marks
This is sort of a minimal implementation to get started. There is still
plenty to do, but we can iterate from here.
2018-05-16 12:44:48 +01:00
1140e80efc rectangles: start on helper to generate rectangle data
This is meant to be used by marks visualizer to show rectangles.
2018-05-16 12:44:48 +01:00
590d317a94 cursor: add helper to get reader
We might need this so that we can access to the updated end time that was
determined by iterating frames.
2018-05-16 12:44:48 +01:00
b7696198bf tools: add more time data to the event dump 2018-05-16 12:44:48 +01:00
0e9f4ca291 visualizers: limit mark rows to 30 2018-05-16 12:44:48 +01:00
14d2554c35 marks: add group to visualizer row
This will allow us to filter events that we do not care about for a given
row. We add a visualizer row per-group.
2018-05-16 12:44:48 +01:00
4f9ea0fce8 visualizers: discover group types when locating mark types 2018-05-16 12:44:48 +01:00
91a45b3313 dump: print group name for mark 2018-05-16 12:44:48 +01:00
540ff0e05d marks: stub out a visualizer row
This doesn't do any rendering yet, but it gets us the plumbing we need to
start rendering mark content into a visualizer row.
2018-05-16 12:44:48 +01:00
6fa2c270e8 visualizers: discover visualizers from capture reader
The goal here is to avoid having to hard code what visualizers are shown
from the .ui files. We just should add things that we find are supported.

Long term, I think we'll add a concept of an "instrument" which is the
combination of a data source (SpSource) and a visualizer (SpVisualizerRow).

The other goal here is to enable the future support for discovering marks
and adding rows for each of those threads.
2018-05-16 12:44:48 +01:00
6da2a3be4b clock: handle uninitialized clock gracefully
If we haven't discovered the proper clock, just default to monotonic.
2018-05-16 12:30:10 +01:00
f8176b699b clock: prefer clock monotonic
Various articles claim that CLOCK_MONOTONIC is actually faster than the
CLOCK_MONOTONIC_RAW, and that seems to be my experience.
2018-05-16 12:28:42 +01:00
ac11f0f941 sources/perf: Capture DRM vblank events as a mark.
This should be useful to visualize system-wide events in the CPU
timeline, especially once we add some more events.

We may want to define some modes eventually, as not all captures will
care about GPU visualization.  However, it's pretty low overhead (60Hz
* number of monitors), so maybe we can just filter it out at
visualization time.

We do a bit more setup work than necessary here (looking up the config
number for the tracepoint per CPU, rather than looking it up once at
startup), but I suspect I'll want to refactor the init anyway once we
add more tracepoint markers.
2018-05-16 10:52:28 +01:00
925dadce82 sources/perf: Include the sample identifier in PERF_RECORD_SAMPLE.
If we want to start watching other perf events, we need a way to look
up what perf event we got when a PERF_RECORD_SAMPLE comes in.  The
sample identifier is what does that.
2018-05-16 10:52:28 +01:00
83b75e6528 sources/perf: Add an explanatory comment for the CPU loop.
I stumbled over this kernel restriction, too.
2018-05-16 10:52:28 +01:00
380995fde5 sources/perf: Add a comment explaining sp-perf-counter structs. 2018-05-16 10:52:28 +01:00
e853c79be9 mark: add group to mark event
This allows grouping marks together so that the UI can present marks within
the same group in the same visualizer row.

The goal here is that our perf stream with drm data will have "drm" or some
similar group name (resulting in one row). mutter/cogl/gnome-shell will
use the thread-id as the group name (or something else that is useful) so
their events are grouped together. gdk-wayland might have it's own group
name as well.

The end result is that we can get a mark row for each series of related
data.
2018-05-15 16:33:30 +01:00
eb6fdffa6f visualizers: fix whitespace 2018-05-15 11:35:01 +01:00
6e8c30dfa3 line-visualizer: use array for pointers and mark private 2018-05-15 10:02:58 +01:00
c6260ad177 capture: update stats for marks 2018-05-14 17:51:51 +01:00
4bdbf130b2 capture: add simple mark support
The goal here is to have an API that allows us to record things like
frame timing data. We might iterate on this API a bit, but this gets us
started.

A SpCaptureMark with a zero duration should be treated like an epoch mark
once a visualizer is created. SpCaptureMark with a non-zero duration should
be treated like a begin/end of operation. This may be useful in generating
something like a flame graph.
2018-05-14 17:15:57 +01:00
e6d5d2b70d bump for development 2018-04-09 21:28:41 -07:00
a7462f2af0 Update German translation
(cherry picked from commit 07d2ae90f635c4b7de17cb8f4b6a27b76217fab5)
2018-03-19 20:23:01 +00:00