Commit Graph

2672 Commits

Author SHA1 Message Date
bcd3d03093 sysprof: Show version in about dialog without GNOME prefix 2025-03-30 16:25:31 +02:00
7db526fbd9 sysprof: Always present existing window on activation
This fixes the problem that a new greeter window is created on second
launch if the greeter window or the recording window is active.
2025-03-28 09:59:21 +01:00
21c9fd4f8c Merge branch 'gbsneto/filter-by-marks' into 'master'
Filter samples by marks

See merge request GNOME/sysprof!129
2025-03-26 17:55:54 +00:00
1612707d21 sysprof: Add filters popover
This allows visualizing currently applied filters, and remove individual
and all filters applied.

Currently the only filter that can show up is the mark filter, but in
the future new filters may be applied.
2025-03-26 14:43:31 -03:00
d80188f019 sysprof: Implement markchartrow.filter-by-mark action
This finally allows setting a session-wide mark filter.
2025-03-26 14:43:31 -03:00
23dacf954d sysprof: Add sysprof_session_filter_by_mark
This will be used to set a global marks filter in the session filter.
2025-03-26 14:43:31 -03:00
02b1d9603b sysprof: Add stub context menu to SysprofMarkChartRow
This will expose the action to set this row's mark catalog as a session
filter.
2025-03-26 14:43:31 -03:00
fb30dd2300 sysprof: Move GtkInscription to SysprofMarkChartRow
No functional changes.
2025-03-26 14:43:31 -03:00
c73f4fa40d sysprof: Apply session filter to sample's scrubber
So that the actual filtered samples are properly represented in the
time scrubber. This will be useful for filtering by marks.
2025-03-26 14:43:31 -03:00
d637c55214 sysprof: Introduce SysprofMarkFilter
It's a GtkFilter implementation that takes a marks catalog, and filters
frames based on whether the timestamps of the frames hit any mark in
the catalog.

Internally this uses an augmented RB tree based on sys/tree.h. The
augment is a timestamp interval. This tree is used to store the mark
intervals and perform the hit test.

This can probably be optimized / improved by building the tree on
demand but as is, this code seems to be able to handle dozens of
thousands of marks without any visible choke.
2025-03-26 14:43:31 -03:00
a7afaf5559 libsysprof: move tree.h to contrib/
Soon src/sysprof will use it as well.
2025-03-26 14:43:22 -03:00
2c08b404ff sysprof/greeter: use GtkFileDialog to select debug directories 2025-03-24 16:56:34 +00:00
163406ccfe sysprof-cli: add --no-sysprofd command line option
This tells the SysprofProfiler that it should avoid using sysprofd unless
for some reason that instrument simply cannot work without it. Currently
that is at least the RAPL and user-space stack decoding instruments
but there may be others.
2025-03-21 12:08:16 -07:00
8ee9784188 libsysprof: add SysprofProfiler:acquire-privileges property
If this property is set to TRUE (the default) it queries sysprofd and
policy-kit for appropriate privileges. That generally means that the
instruments will use sysprofd to get access to things like /proc files,
perf event streams, and what not.

If set to FALSE, then this tells the instruments that they should try to
do that work locally instead of querying the sysprofd instance via D-Bus.
2025-03-21 12:08:16 -07:00
f7eb2134ad libsysprof/instruments: use provided D-Bus connection for sysprofd
If we were provided a D-Bus connection to use for sysprofd then use that.
Otherwise, try to fallback to doing the work in process without the help
of sysprofd.
2025-03-21 12:08:16 -07:00
94af48094d libsysprof/perf-event-stream: do local syscall when DBus is unavailable
If we are setup without a D-Bus connection to use to talk to sysprofd then
try to perform the syscall() directly for perf_event_open.

Generally that means you need to be root.
2025-03-21 12:08:15 -07:00
637dfceb85 libsysprof/instruments: add set_connection() vfunc
This is used to tell the instruments what GDBusConnection they should use
to query sysprofd. Lack of a connection means they should try to do things
in process without querying sysprofd.
2025-03-21 12:08:15 -07:00
2971f34541 libsysprof/util: add helper to get proc file
This helper allows us to get the file locally or via sysprofd when the
GDBusConnection is provided.

Be careful about use as your local /proc may be different than the
"system" /proc where sysprofd lives.
2025-03-21 12:08:12 -07:00
ae58643f4d build: add GNOME 49 version macros 2025-03-21 11:59:18 -07:00
50036d26fd sysprof/greeter: fixup g_auto usage and trailing space 2025-03-20 13:02:45 -07:00
0c406167dc sysprof-greeter: add debug directory handling in profiler creation
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-03-20 13:02:45 -07:00
6424bd35aa sysprof-greeter: improve code quality and UI in greeter
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-03-20 13:02:45 -07:00
78c6a5ad49 sysprof-recording-template: add debugdirs property for external debug directories
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-03-20 13:02:44 -07:00
db914e8c63 sysprof-greeter: validate directory existence in debug directory entry
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-03-20 13:02:44 -07:00
530aff1d50 sysprof-greeter: replicate UI for managing debug directories with wrong key
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-03-20 13:02:44 -07:00
19547e96e6 DESIGN.md: add some information on how sysprof is built 2025-03-17 18:47:08 -07:00
05dface80a Merge branch 'wip/hppa' into 'master'
mapped-ring-buffer: Round to the shared memory boundary on hppa

See merge request GNOME/sysprof!127
2025-03-18 01:31:25 +00:00
745c5c28c4 build: add check for asm/perf_regs.h
Related: #127
2025-03-17 18:28:19 -07:00
b129c7dea2 mapped-ring-buffer: Round to the shared memory boundary on hppa
In map_head_and_body_twice(), the second mmap call fails:

mmap2(NULL, 135168, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) = 0xf64a2000
mmap2(0xf64b3000, 65536, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3, 0x1000) = -1 EINVAL (Invalid argument)

Due to cache issues, all shared mapping of a page must be equivalently
mapped.  This requires page mappings to be at the same virtual address
modulo 4 MB.  Due to a kernel limitation, all mappings to a file must
be equivalent.

The test can be fixed by rounding the buffer_size used in the mapped
ring buffer to 4 MB on hppa.  This makes the two mmap mappings equivalent.

Bug-Debian: https://bugs.debian.org/1021853
2025-03-17 11:53:28 -04:00
af3daadbdd Merge branch 'varunrmallya/issue136' into 'master'
Adds persistence to environment variables

See merge request GNOME/sysprof!125
2025-03-09 17:28:08 +00:00
9cf22bc906 sysprof-greeter: fix memory leak in sysprof_greeter_create_profiler
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-03-07 14:16:28 +05:30
8186cc464a sysprof-greeter: optimize environment variable handling in profiler creation
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-03-06 17:57:01 +05:30
775d7ae5eb sysprof-greeter: refactor environment variable handling in profiler creation
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-02-26 23:24:20 +05:30
05f78de383 sysprof-greeter: add environment variable handling in profiler creation. Refactor pending.
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-02-22 15:22:47 +05:30
VBB
3ac75d309d sysprof/chart: Translate origin of child chart layer 2025-02-22 13:43:31 +07:00
aaf4cc3d22 sysprof-power-profile: Use UPower DBus API
Since some time the power-profiles-daemon project has been moved under
the upower umbrella and renamed its API to follow that.

While the legacy name is still supported, there are plans to not support
it anymore in future [2]. So let's update gnome-shell code to use the
current main name instead.

[1] https://gitlab.freedesktop.org/upower/power-profiles-daemon/-/merge_requests/148
[2] https://gitlab.freedesktop.org/upower/power-profiles-daemon/-/merge_requests/166
2025-02-10 01:19:39 +01:00
10c1ae9381 live-unwinder: only enable live-unwinder on x86(_64)
Fixes: #135
2025-02-08 12:09:53 -08:00
4999ae8598 libsysprof: add SysprofSymbolsBundle:enable-debuginfod property
This adds a property instead of the global to key off if the debuginfod
resolver should be used to bundle symbols into the capture at the
augmentation point post-capture.

This defaults to off because we do not want to auto-include them when
recording from the GTK UI (as we'd spend a bunch of time not showing a
window) but we do want to include them from sysprof-cli as that could
be running on a remote machine/container/vm with different debug URLs.

In the future, that could be improved with a different UI flow though.

Related: #130
2025-02-06 22:23:24 -08:00
91c8bc7105 libsysprof: Add debuginfod toggle for sysprof-cli inside libsysprof
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-02-06 00:59:34 +05:30
202129e3b5 sysprof: Enable debuginfod option in tests
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-02-03 22:25:45 +05:30
333cd719f7 Revert "sysprof/greeter: add external URLs configuration for debuginfod"
This reverts commit b13d4acb98.
2025-02-03 21:34:43 +05:30
b13d4acb98 sysprof/greeter: add external URLs configuration for debuginfod
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-02-02 00:55:19 +05:30
7ed0668a66 sysprof/recording-template: Comment out debuginfod handling and clean up TODOs
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
2025-02-01 23:34:05 +05:30
0c5f0c3c65 sysprof: Add debuginfod toggle on greeter and make it persist 2025-02-01 02:37:16 +05:30
3ed3d8e620 sysprof/greeter: apply default recording template to loader
This ensures that the document loader can apply settings from the recording
template (thusly applying future options such as debuginfod or extra debug
directories).

Related: #130
2025-01-28 13:29:53 -08:00
72df41485d sysprof/greeter: remove open/quit menu items
These are both available in other ways from the window. The close button
will quit the app if it's the last window. The Open File button at the
bottom handles Open and makes it more clear you can tweak things using the
profiler settings now.

Related: #130
2025-01-28 12:47:13 -08:00
17b91ddf70 sysprof/greeter: load/save recording template for persistence
This sets things up to save the state to disk if the greeter suceeded at
creating a profiler instance so that it may be used again on the next
run. Additionally, when loading the greeter it attempts to load from disk
the saved state.

We may want to extend this in the future to allow using sysprof-cli with
a recording template instead of command line options.
2025-01-28 12:33:50 -08:00
5904667c45 sysprof: add missing constructor for recording template 2025-01-28 12:32:26 -08:00
55bbee1ce1 sysprof/greeter: hide user-stack caption on non-x86_64 2025-01-28 12:18:32 -08:00
3181172e72 sysprof: add restore/save API for recording template 2025-01-28 12:14:44 -08:00