Commit Graph

1837 Commits

Author SHA1 Message Date
ec67106a4d libsysprof-capture: add missing platform header 2020-02-13 18:54:42 -08:00
089f5d7c56 control-fd: add SysprofControlSource
This is a source that will allow the inferior to call into Sysprof to
create a new mmap()'d ring buffer to share data. This allows significantly
less overhead in the child process as Sysprof itself will take care of
copying the data out of the inferior into the final capture file. There is
more copying of course, but less intrusive to the inferior itself.
2020-02-13 18:53:58 -08:00
77400c57c1 libsysprof-capture: add mmap()'d ring buffer
This is the start of a ring buffer to coordinate between processes without
the overhead of writing directly to files within the inferior process.
Instead, the parent process can monitor the ring buffer for framing
information and pass that along to the capture writer.
2020-02-13 18:50:20 -08:00
aca1a6a765 libsysprof-ui: check for valid frame type before incrementing 2020-02-13 14:32:34 -08:00
a8c6038679 libsysprof-capture: fix version value for 3.36 2020-02-13 14:32:34 -08:00
86dcedfba0 libsysprof-capture: add sysprof_getpagesize()
This is a helper to get the page size on various platforms so that calling
code does not need to duplicate that effort.
2020-02-13 14:32:34 -08:00
19e077736b libsysprof-capture: use sysconf() instead of getpagesize() 2020-02-13 14:32:34 -08:00
6cb55f4d71 libsysprof-capture: add raw frame helper
This helps when shuffling data between sources so that you can simply
memcpy() into the destination buffer.
2020-02-13 14:32:34 -08:00
1d44282edb libsysprof-capture: add define for last frame type 2020-02-13 14:32:34 -08:00
3e7acd5663 libsysprof: protect against bad reads 2020-02-13 14:32:34 -08:00
6aa6f07465 Updated Spanish translation 2020-02-12 09:01:57 +01:00
3f07cf2748 libsysprof: decode allocation frames into symbol map
This ensures that we have proper symbols when opening a file with
allcoation frames.
2020-02-11 18:40:29 -08:00
c39cf46776 tools: perform cleanup/supplementals when stopping profiler 2020-02-11 18:39:20 -08:00
b351e1a50a capture: add comment about frame tracking 2020-02-11 18:07:31 -08:00
75c966e1d2 Updated Spanish translation 2020-02-10 14:50:29 +01:00
1255be2df2 Update Polish translation 2020-02-09 12:27:37 +01:00
dbe6f3c0cb Update POTFILES.in 2020-02-08 16:30:16 +01:00
6dd86a3986 remove stale TODO 2020-02-07 19:12:09 -08:00
33c81a3a9c memprof: add memory profiling using LD_PRELOAD
This brings over some of the techniques from the old memprof design.
Sysprof and memprof shared a lot of code, so it is pretty natural to
bring back the same callgraph view based on memory allocations.

This reuses the StackStash just like it did in memprof. While it
would be nice to reuse some existing tools out there, the fit of
memprof with sysprof is so naturally aligned, it's not really a
big deal to bring back the LD_PRELOAD. The value really comes
from seeing all this stuff together instead of multiple apps.

There are plenty of things we can implement on top of this that
we are not doing yet such as temporary allocations, cross-thread
frees, graphing the heap, and graphing differences between the
heap at to points in time. I'd like all of these things, given
enough time to make them useful.

This is still a bit slow though due to the global lock we take
to access the writer. To improve the speed here we need to get
rid of that lock and head towards a design that allows a thread
to request a new writer from Sysprof and save it in TLS (to be
destroyed when the thread exits).
2020-02-07 19:00:33 -08:00
cae70498da callgraph: fix whitespace 2020-02-07 16:54:43 -08:00
9689b8c9c6 selection: whitespace cleanup 2020-02-07 16:54:23 -08:00
31d83a12b9 elf: short-circuit symbol resolving 2020-02-07 16:54:18 -08:00
4c5fec742f jitmap: whitespace cleanup 2020-02-07 16:54:12 -08:00
21fc5609f2 build: ignore post-install unless gtk app is installed 2020-02-07 11:04:03 -08:00
2e72e6af84 capture: fix format type for address on macOS 2020-02-07 11:00:09 -08:00
ac3cf31d06 Updated Danish translation 2020-02-07 03:24:40 +01:00
be2949b72e Update Indonesian translation 2020-02-05 11:37:35 +00:00
0cdea2d776 Update Polish translation 2020-02-02 12:52:43 +01:00
47c09cb241 build: add version macros for 3.36 2020-01-31 09:13:50 -08:00
aee8bb12c8 build: add -Wl,-z,relro -Wl,-z,defs and -Wl,-z,now link flags 2020-01-31 09:13:01 -08:00
96000a4115 Updated Spanish translation 2020-01-30 15:02:08 +01:00
f5ddeb176d Update Slovak translation 2020-01-30 08:02:33 +00:00
981873af75 cli: add --merge command line option
This allows the caller to merge multiple syscap files into one such as:

  sysprof-cli --merge a.syscap b.syscap > c.syscap

Fixes #26
2020-01-29 08:17:36 -08:00
fbacb39af8 Update Polish translation 2020-01-26 14:46:46 +01:00
0b4defe135 binfile: fix path check 2020-01-24 12:54:51 -08:00
9a3a95a5ca podman: add debug directories from podman containers
This is meant to allow us to find the debug files for a given library for
podman containers running as the current user. However, we still need to
try to translate the fuse-overlayfs paths when parsing the /proc/pid/mounts
or we'll have incorrect paths coming from the event stream.
2020-01-24 10:54:32 -08:00
d176efe91c lookaside: cleanup whitespace 2020-01-24 10:51:36 -08:00
bae10987f0 libsysprof-ui: fix timing information for marks tooltips 2020-01-24 09:29:34 -08:00
e90efc8a20 Updated Spanish translation 2020-01-24 12:50:26 +01:00
94b0ecb758 display: provide recording time for display titles 2020-01-23 12:46:44 -08:00
460df56fa5 visualizers: clear selected row when showing details
The details don't correspond to any selected row, so clear the row when
we switch to the details page.
2020-01-23 12:36:04 -08:00
bcfaa6caa8 perf: use task-ids instead of pids
The pids might overlap, which isn't that useful for us when we are creating
threads. Instead use the task-ids (which should basically overlap anyway).
2020-01-23 12:26:18 -08:00
731b6dd379 sysprof: allow passing program path to sysprof
If the path provided to us is an executable program (instead of a syscap
file) then we can setup the path as the binary to execute in the profiler
assistant and save the user a couple clicks.
2020-01-23 11:59:50 -08:00
599ecaebe1 display: remove unused variable 2020-01-23 11:59:50 -08:00
ddd6a66f35 Updated Spanish translation 2020-01-23 12:55:34 +01:00
7dad1f2ab4 marks: add end time to mark details 2020-01-22 12:01:26 -08:00
812b0d60a0 counters: use counter description in menu item 2020-01-21 21:06:41 -08:00
b29ee9e2cc flatpak: update org.gnome.Sysprof3.json
This gets things building again on updated SDK/Platform.
2020-01-21 11:27:43 -08:00
61da1bbd9e Update Indonesian translation 2020-01-14 12:58:10 +00:00
33619b4240 Update Indonesian translation
(cherry picked from commit 558b264ade297421cb1f1f9ac4e59d0f7b714977)
2020-01-13 08:08:50 +00:00