Commit Graph

3414 Commits

Author SHA1 Message Date
730f8f4d66 sysprof: filter the callgraph by the selected time span
This ensures the callgraph code has fewer items to look at. The first level
of filtering is done by the SysprofDocument bitset index for items
matching the type (via SysprofDocumentBitsetIndex). Then the new
SysprofTimeFilterModel filters the frames by time-span by binary searching
for the first and last indexes which match that time span, avoiding the
pathological case of linear search for the spans (which would inflate a
GObject for every element).
2023-07-13 11:16:14 -07:00
f147cc6be0 libsysprof-gtk: invalidate callgraph when traceables change
If we get an items-changed event for the callgraph traceables, we need to
regenerate the callgraph. Queue a reload under such a situation.
2023-07-13 11:14:30 -07:00
72cf6ff3a5 sysprof: filter sample graph by visible time range
This allows it to avoid a bunch of work when you've dived down into a
section of visible time, as fewer nodes need to be looked at.
2023-07-13 11:06:13 -07:00
b9f7ecd945 sysprof: add SysprofTimeFilterModel
This is a model that expects the set to be in sorted order by time, and
requires that the items are a SysprofDocumentFrame. If that holds true,
it can binary search to find the correct frames based on a requested
time-span that is inclusive only of matching frames.

This is useful to dive down into data based on either the visible or
selected time span of a session without having to expensive GtkFilter
operations (which would look at every object in the set).
2023-07-13 11:05:22 -07:00
f39723c2e6 libsysprof-analyze: add equal func for timespan 2023-07-13 11:04:01 -07:00
7c02b0f62c libsysprof-analyze: include CPU core-id 2023-07-13 08:43:49 -07:00
0d5d30dd60 sysprof: connect session filter to traceables 2023-07-12 18:05:18 -07:00
af5e62a7ef sysprof: add scrubber to marks page 2023-07-12 18:02:22 -07:00
52090e1f77 libsysprof-analyze: add marks property 2023-07-12 18:02:10 -07:00
31536573f4 sysprof: implement scrubbing for samples view 2023-07-12 17:53:55 -07:00
e9b0609033 sysprof: use visible range for chart
We don't want it to update based on selection since that should match
what is in the scrubber.
2023-07-12 17:53:40 -07:00
08cf2b1c17 libsysprof-gtk: allow null track 2023-07-12 17:53:23 -07:00
83e7579460 sysprof: start on SysprofTimeScrubber
This is going to be used to bring the whole tracksview thing we did before
and make the selections work directly on charts. We can probably use the
same thing w/ a GtkOverlay and custom positioning to replace the old
usage too.
2023-07-12 17:26:56 -07:00
03bc678daa sysprof: add dialog to show CPU information 2023-07-12 16:45:42 -07:00
d0012dd3b1 sysprof: make the sidebar a bit nicer w/ traceables 2023-07-12 16:02:45 -07:00
f3418c42e9 sysprof: hide utility when there is no sidebar widget 2023-07-12 15:53:38 -07:00
ea8befb624 sysprof: move traceables utility into SyprofSamplesSection
This gets it out of the callgrpah view so that it can live in the sidebar
area of a AdwOverlayNavigationView.

We allow the utility area to control the entire view (including the
toolbarview) so that we don't have to bind extra properties for titles,
and other random things.
2023-07-12 15:48:28 -07:00
27f429d4f2 libsysprof-gtk: use models and databinding for traceables
This is just working towards less code and more bindings for various parts
of the traceables display (so we can move it out of this view).
2023-07-12 15:12:04 -07:00
a234cc2197 libsysprof-gtk: add SysprofCallgraphView:utillity-traceables
This property is meant to hold accessory traceables that match the current
selection in the callgraph view. Eventually we want this bridged with the
callgraph sections to show something useful.
2023-07-12 14:52:39 -07:00
0cccd844b0 sysprof: start on utility pane 2023-07-12 14:46:10 -07:00
dc0c19c211 libsysprof-profile: flush recording before exit 2023-07-12 13:15:20 -07:00
e440c130e8 libsysprof-profiler: record sampler shutdown reason 2023-07-12 13:15:08 -07:00
a82e8e2d2a libsysprof-profile: record log message for stop command 2023-07-12 13:14:29 -07:00
1bcdb3aeac libsysprof-profile: do not discard on cancel our subprocess wait 2023-07-12 13:14:09 -07:00
1f4f4d7e50 build: keep libsysprof-capture version at 4
We haven't changed the format, so we really don't want to cause unnecessary
churn by applications consuming this.
2023-07-12 11:49:55 -07:00
c4b5e3ec99 sysprof: fix initial sorting of log entries 2023-07-12 11:33:42 -07:00
78a17d5d52 libsysprof-analyze: add API to get CPU info as objects
This can be handy to use from UI so we can bind it to UI elements.
2023-07-12 11:24:18 -07:00
8c85cca062 libsysprof-gtk: add some spacing for section header 2023-07-12 10:37:56 -07:00
88d0589fea libsysprof-profile: tail journald and append logs to capture
It can be handy to get system information from journald to correlate with
what is going on in applications. This simple journald tail GSource will
dispatch to our callback which can append the logs to the capture.

This uses a custom callback rather than the GSourceFunc because that seems
a bit annoying to use with recent GCC function equivalence checks.
2023-07-12 10:31:23 -07:00
ae571f3f6e libsysprof-ui: remove legacy libsysprof-ui library
This is libsysprof-gtk now, but that too will be absorbed by sysprof app
directly rather than having a UI library.
2023-07-12 10:00:11 -07:00
6075a0cd91 build: fix log domains 2023-07-11 13:32:09 -07:00
812a54803c sysprof: add dialog to show process information
Includes address layout and mount info for troubleshooting.
2023-07-10 16:23:16 -07:00
8c3fef768d libsysprof-analyze: expose properties for mmaps and mounts 2023-07-10 16:18:42 -07:00
0be15aa897 sysprof: add more section icons 2023-07-10 15:30:08 -07:00
fb85c2078e sysprof: start on icons for sections 2023-07-10 14:59:09 -07:00
79f6984e3e sysprof: add some mark icons to marks section 2023-07-10 14:49:33 -07:00
7dbb5abb62 sysprof: add stack traces above memory callgraph 2023-07-10 14:44:26 -07:00
dc66e93eec sysprof: ensure initial row is selected 2023-07-10 14:39:33 -07:00
77a305f3bf libsysprof-analyze: runtime protection against NULL names
Shouldn't happen, but at least don't crash.
2023-07-10 14:35:38 -07:00
0c51dff124 sysprof: add memory allocations section
Still a bunch to do here to restore what we had previously, but this gets
the section into place.
2023-07-10 14:23:15 -07:00
9147d45e4a libsysprof-gtk: start on memory callgraph view 2023-07-10 14:22:44 -07:00
a4276f5b8f libsysprof-analyze: allow two pointers for augmentation
This affords us the ability to shove memory statistics in the inline
augmentation area for memprof data.
2023-07-10 14:15:03 -07:00
6f2a3ac74e sysprof: categorize sidebar sections 2023-07-10 14:04:20 -07:00
e6a769b386 sysprof: add stack traces above callgraph
This still needs to be put into a proper selectable container, but having
the chart there gives me some idea of how things look for now.
2023-07-10 13:54:45 -07:00
0a342c7d26 sysprof: ctrl+n to go record again from greeter 2023-07-10 13:47:20 -07:00
d47a7b0791 libsysprof-analyze: add process title including PID 2023-07-10 13:42:56 -07:00
b22e2f3b6a libsysprof-profile: use shared time for process times 2023-07-10 13:35:50 -07:00
f003482afb libsysprof-analyze: update end-times after process pool is created
These largely get created when processing the load of various document
pieces. Wait until the end so that we actually have something to update.
2023-07-10 13:31:13 -07:00
32bfc4eb26 sysprof: wire up compositor toggle 2023-07-10 13:08:08 -07:00
1c08fc18b0 libsysprof-profile: fix success case 2023-07-10 13:07:40 -07:00