5a5e269e7c
sysprof: fix category and weights for drawings
2023-08-23 16:16:28 -07:00
f9dabe582a
sysprof: some work on graph recursion
2023-08-23 16:01:14 -07:00
790408f10c
sysprof: allow caller to check for invisible nodes
2023-08-23 16:01:00 -07:00
cfc40225c9
sysprof: add very simple graph generation
...
This is not yet interactive, nor very descriptive of what is contained
within it.
2023-08-23 15:25:41 -07:00
9de7199373
sysprof: add helper to get category color
2023-08-23 15:25:07 -07:00
be2970929f
sysprof: bind callgraph to flame graph
2023-08-23 14:32:18 -07:00
b80c8b8b5b
libsysprof: always increment count for callgraph nodes
...
This shouldn't affect categorizing because that only uses the value if
is_toplevel. But with this added, we can use the count for weights in
other tooling w/o needing augmentation.
2023-08-23 14:32:04 -07:00
fd618ccb4b
callgraph: track max height of callgraph
2023-08-23 14:31:10 -07:00
2cf6701adf
sysprof: add scaffolding for flamegraph
2023-08-23 14:07:17 -07:00
ddeb1a37d8
sysprof: remove unneeded caption
2023-08-21 20:36:56 -07:00
e2e19c10e6
sysprof: add colorization to time span layers
...
We might need to back this off or find some tweaks if it's too slow, but
for now it seems reasonably fast to just do it.
2023-08-21 16:43:29 -07:00
340e92403f
libsysprof: stop streams at end of recording
...
Don't wait for disposal to stop this recording.
2023-08-21 16:01:35 -07:00
fa49127c85
sysprof: don't include edge items when filtering
2023-08-21 15:43:49 -07:00
71a2404d6e
sysprof: include boudaries by default
...
This will help with graphs where we want to show things which will overlap
the edges.
2023-08-21 15:40:51 -07:00
3a5aa1e887
sysprof-cli: add --scheduler option
2023-08-21 15:25:35 -07:00
bd77a1d2ef
sysprof-agent: add --scheduler option
2023-08-21 15:25:28 -07:00
233e7a72f1
sysprof: add UI to enable scheduler details
2023-08-21 15:22:25 -07:00
82020e86be
libsysprof: add instrument to record scheduler switching
...
This is to allow us to look at what processes were running when as a way
to get a high-level overview of usage.
2023-08-21 15:05:48 -07:00
bf73d142dc
libsysprof: sort frames with timsort
...
These are largely pre-sorted, but not fully when you have merged data. This
uses timsort to speed that up a bit.
In particular, the comparison of various sorts break down to (for a
~32,000,000 record capture.
g_array_sort_with_data() => 3.9 seconds
qsort_r() = > 3.7 seconds
gtk_tim_sort() => .79 seconds
2023-08-18 16:46:28 -07:00
bdf9a55969
libsysprof: be defensive against null traceable
2023-08-17 13:36:39 -07:00
9f00d904b0
Revert "libsysprof: add rwlock for symbol cache"
...
This reverts commit d1b4308af7 .
2023-08-16 15:43:50 -07:00
48dc402c3b
Revert "libsysprof: parallelize capture symbolizing"
...
This reverts commit a7a0c782d1 .
2023-08-16 15:43:49 -07:00
3b97252a8e
Revert "libsysprof: be defensive against null traceable"
...
This reverts commit c75022c257 .
2023-08-16 15:43:46 -07:00
c75022c257
libsysprof: be defensive against null traceable
2023-08-16 14:06:40 -07:00
a7a0c782d1
libsysprof: parallelize capture symbolizing
2023-08-15 22:17:34 -07:00
d1b4308af7
libsysprof: add rwlock for symbol cache
...
This is necessary so we can start looking at threading symbolizers.
2023-08-15 19:21:31 -07:00
10807758aa
sysprof: use sampled model for marks scrubber
...
This can save a tramendous number of items to look at in the scrubber.
2023-08-15 19:08:15 -07:00
9792759ba9
sysprof: cleanup n-items handling
2023-08-15 17:40:49 -07:00
efee8bda79
sysprof: use sampled model to limit input to xy series
2023-08-15 17:36:25 -07:00
08664bdcda
sysprof: limit number of samples sent for normalization
2023-08-15 17:30:37 -07:00
6eb6514cd4
sysprof: add a new sampled model
...
The goal here is to allow us to look at way fewer items in a model rather
than every item. For example, we don't want to draw 32,000,000 stack
traces in the overview chart.
2023-08-15 17:30:13 -07:00
3598755963
libsysprof: flush incoming events when finalizing ring source
...
This just helps ensure we've not lost anything during the shutdown of the
profiler here.
2023-08-15 15:38:02 -07:00
c45aba997d
libsysprof-capture: sleep and try again to get an event
...
Unless we've failed before, then just bail immediately so that applications
which loose their controller keep running with minimal overhead.
2023-08-15 15:37:24 -07:00
b96bf5c969
libsysprof: increase priority of mapped ring buffer source
...
We want to reduce the chances we've lost anything in these, which is
pretty important for memory tracing.
2023-08-15 14:41:23 -07:00
a9cf64903c
libsysprof-capture: increase ring buffer size
...
Make sure there is less chance of losing information in these buffers.
2023-08-15 14:40:31 -07:00
f00773702a
preload: always track realloc changes
...
We might go to zero, or we might change our size. Either way we want to
have accurate information about that size change.
2023-08-15 14:29:01 -07:00
9e87206c37
sysprof: set window title to include document
...
That way we can differentiate multiple windows.
2023-08-15 13:44:46 -07:00
c576df92db
libsysprof: allow specifying type in index model
2023-08-14 21:48:51 -07:00
fad5f0381b
sysprof: filter memory allocations by selected time
2023-08-14 16:49:47 -07:00
f1f71e0135
sysprof: add leak detection
...
This was one of the last pieces missing for 45.
2023-08-14 16:44:16 -07:00
a1499a62ac
sysprof: update memory allocation icon
2023-08-14 16:43:59 -07:00
4967d5faeb
libsysprof: add test for leak detection
2023-08-14 16:02:46 -07:00
f7a32750e2
libsysprof: add leak detector helper
...
This is a leak detector by finding allocations which do not have a
corresponding free record.
2023-08-14 16:02:46 -07:00
a27eee8087
libsysprof: give internal access to allocations bitset
2023-08-14 16:02:46 -07:00
45f08e07c9
libsysprof: externalize access to frames array
...
This can be useful to optimize some walking paths in other layers.
2023-08-14 16:02:46 -07:00
751337a47a
sysprof: make zoom in/out sticky to left edge
...
Fixes #37
2023-08-14 11:27:40 -07:00
a141d9a194
sysprof-cli: bump default buffer size to 8mb
...
The goal here is just to reduce the number of file system transactions during
the recording process.
2023-08-14 10:26:24 -07:00
336d4a6e91
cli: add option to specify buffer size in pages
2023-08-14 10:22:33 -07:00
6e72cb3497
ui: Mark two strings translatable
...
- Logs
- Stack Traces
2023-08-13 02:22:08 +03:00
4ad44609d0
build: remove optional support for libunwind
...
backtrace() was only ever used for bringup, not actually meant to be used
in any production capacity.
2023-08-11 12:22:57 -07:00