Commit Graph

4228 Commits

Author SHA1 Message Date
Bartosz Taudul
03c98a8d4c
Show external frames by default. 2024-02-27 22:12:27 +01:00
Bartosz Taudul
77f8ec0b2f
Implement hiding external stack frames. 2024-02-27 02:04:30 +01:00
Bartosz Taudul
c514a5caca
Implement sorting instrumentation statistics by location. 2024-02-25 13:52:37 +01:00
David Briscoe
255e3d2829 Correctly filter allocations in memory call tree
Fix #723: Memory: active allocations are incorrectly displayed in call stack tree

The range we were looking for was wrong (should be Active instead of
Inactive), but I also reworked to make the comparison clearer.

Test

Using the repro app from the bug:
1. Click "Free + Allocate" once
1. Call stack tree shows 2 entries under "Active allocations", 1 active
   allocation, 0 inactive allocations in the call stack tree.
1. Click "Free + Allocate" several times
1. Call stack tree shows 1 KB of active allocations and many KB of
   inactive.
2024-02-15 10:38:48 -08:00
Bartosz Taudul
5e4eae5c2e
Avoid creation of a temporary object. 2024-02-09 01:27:33 +01:00
Bartosz Taudul
fc8fc80900
Drop support for pre-0.9.0 traces. 2024-01-02 20:08:41 +01:00
Bartosz Taudul
90c7a43e8a
Less verbose CPU data table header labels. 2024-01-02 20:08:18 +01:00
Bartosz Taudul
680174685b
Pass function names to ViewSource() calls. 2024-01-02 17:04:01 +01:00
Bartosz Taudul
4757d101fc
Optional ctrl key mod check when running view source with function name. 2024-01-02 17:04:01 +01:00
Bartosz Taudul
9a5fb0bb51
Implement search for symbol matching function name when opening source view. 2024-01-02 16:15:12 +01:00
Bartosz Taudul
cf412bfb2e
Change microarchitecture fallback to ZEN4. 2024-01-02 14:56:00 +01:00
Bartosz Taudul
762582357b
Check if source location counts are in order when loading traces. 2023-12-31 14:16:50 +01:00
Bartosz Taudul
b262cb2428
Handle load failure exceptions. 2023-12-31 14:16:06 +01:00
Bartosz Taudul
5062bef69a
Add trace load failure exception. 2023-12-31 13:55:06 +01:00
Bartosz Taudul
586c6bf166
Hook up source location overflow failures.
Note: not tested. Expect some off-by-one bugs. Control flow may fail. Oh no.
2023-12-31 13:06:51 +01:00
Bartosz Taudul
54ee77026f
Add source location overflow failures. 2023-12-31 12:58:56 +01:00
Bartosz Taudul
58c630473a
Use thread icon for thread label in statistics. 2023-12-21 13:26:43 +01:00
Bartosz Taudul
e44db26492
Display number of groups in find zones window. 2023-12-20 17:31:00 +01:00
Bartosz Taudul
ef9b079ecc
Mark invalidGid constexpr. 2023-12-20 17:26:29 +01:00
Bartosz Taudul
56fa051bea
Display number of threads each source location is present in. 2023-12-20 17:19:26 +01:00
Bartosz Taudul
8187519775
Add threads count to SrcLocZonesSlim. 2023-12-20 17:19:26 +01:00
Bartosz Taudul
d01113150d
Calculate per-thread source location counts. 2023-12-20 16:42:37 +01:00
Bartosz Taudul
af73dba73e
Merge pull request #665 from tiago-rodrigues/trodrigues/offline_symbol_resolve
Add support for offline callstack symbol resolving
2023-11-27 16:53:22 +01:00
Ivan Molodetskikh
ad39a01de1
Don't error on frame end without start (#666)
With on-demand profiling we're very likely to connect in the middle of a
discontinuous frame and thus receive a frame end without any preceding
frame start. So don't error out in this case.
2023-11-19 19:09:58 +01:00
Tiago Rodrigues
687d681764 Instead of adding new method, make StoreString public 2023-11-19 06:32:17 -08:00
Tiago Rodrigues
f4f75eac64 Add support for offline symbol resolving by setting the "TRACY_SYMBOL_OFFLINE_RESOLVE=1" env var
- Add a tool "tracy-edit" that allows loading a tracy capture, patching symbols and recompress the result
- Add offline symbol resolvers for linux (using addr2line) and windows (using dbghelper)
2023-11-19 06:32:16 -08:00
Bartosz Taudul
348be05605
Add zmmword as known asm size directive. 2023-11-08 02:01:37 +01:00
Ivan Molodetskikh
41fc293043 Add GpuTimeSync event
Allows to resynchronise GPU and CPU timestamps during profiling.
2023-10-22 10:16:41 +04:00
Bartosz Taudul
37aff70dfa
Release 0.10.0. 2023-10-16 20:59:38 +02:00
Bartosz Taudul
03fdb3402d
Update xxhash to 0.8.2. 2023-10-09 23:11:30 +02:00
Bartosz Taudul
52721a6bf0
Add Zen4 EPYC CpuId. 2023-10-09 22:34:44 +02:00
Bartosz Taudul
2c18097bf9
Symbol history walking. 2023-10-07 01:28:10 +02:00
Bartosz Taudul
2a6a082c93
Maintain a history of viewed symbols. 2023-10-07 01:12:16 +02:00
Bartosz Taudul
296f30a9c5
Reduce number of worker threads used for render tasks.
Number of cores -> number of worker threads:

1 -> 0
2 -> 0
3 -> 0
4 -> 1
5 -> 1
6 -> 2
7 -> 2
8 -> 3
9 -> 3
10 -> 4
11 -> 4
12 -> 5
13 -> 5
14 -> 6
15 -> 6
16 -> 7
17 -> 7
18 -> 8
19 -> 8
20 -> 9
21 -> 9
22 -> 10
23 -> 10
24 -> 11
25 -> 11
26 -> 12
27 -> 12
28 -> 13
29 -> 13
30 -> 14
31 -> 14
32 -> 15
2023-08-05 12:01:36 +02:00
Bartosz Taudul
57bd63dab6
Show trace description/filename on titlebar. 2023-06-29 23:53:37 +02:00
Bartosz Taudul
2b191e157e
Fix early exit not initializing values used later on. 2023-06-06 17:46:49 +02:00
Bartosz Taudul
c00d8c6211
FreeBSD has 64-bit stat with no need for stat64. 2023-05-23 23:41:39 +02:00
Bartosz Taudul
4e1b198380
FreeBSD has alloca in stdlib.h. 2023-05-23 23:38:34 +02:00
Bartosz Taudul
b072dbcdc6
Fix TaskDispatch on wasm. 2023-05-07 16:11:18 +02:00
Bartosz Taudul
c75f01c90e
Merge pull request #557 from KristofferC/kc/filter_user
allow filtering zones in Zone finder based on the user text
2023-05-02 17:46:27 +02:00
Kristoffer
3285c8c960 formatting 2023-05-02 11:25:42 +02:00
Bartosz Taudul
bd2f903c08
Add persistent target FPS option. 2023-05-01 19:09:27 +02:00
Bartosz Taudul
d6c5d3f6db
Don't enforce creating at least one worker thread in TaskDispatch.
Everything can be confined to a single thread that does job dispatch,
and then waits for the jobs to finish. TaskDispatch has always executed
outstanding work during this wait, so no workers are needed.
2023-05-01 15:44:27 +02:00
Bartosz Taudul
331c2bd7c0
Configure number of threads in TimelineController. 2023-05-01 14:41:51 +02:00
Bartosz Taudul
a2d470690f
Pass global config to View. 2023-05-01 14:41:38 +02:00
Bartosz Taudul
1dd0341cff
Add global configuration struct. 2023-05-01 14:40:31 +02:00
Kristoffer
73c83906b6 make the histogram take into account filtered zones 2023-05-01 13:31:21 +02:00
Kristoffer
6c5029af78 fix id collision in clear button 2023-05-01 13:13:37 +02:00
Bartosz Taudul
993c78f045
Fix thread context switch offset. 2023-05-01 12:50:48 +02:00
Bartosz Taudul
5019f7d2b4
Force inline GetZoneEnd's fast exit path. 2023-05-01 01:28:32 +02:00
Bartosz Taudul
2e9d8f8215
Check if external threads are local.
For some unknown reason, local threads may be attributed to an external
process (at least when profiling on Windows). This causes some problems,
for example the CPU usage graph may show that CPU is pegged by some other
program, when it reality it is the profiled program that uses the CPU time.

Workaround by checking first, if the thread id is known to be local by the
profiler, i.e. if there were user-generated events originating from it.

This still leaves other things, such as the CPU data list, being wrong,
but the CPU data is meant to show raw TID -> PID mapping. If the source
data is wrong, there's not much to fix here.
2023-04-30 13:55:49 +02:00
Bartosz Taudul
e1e4699a52
Load custom mip chain for zigzags. 2023-04-29 13:10:58 +02:00
Kristoffer
ef68f3139f allow filtering zones in Zone finder based on the user text 2023-04-28 16:54:29 +02:00
Bartosz Taudul
b83cb3f2ce
Don't use hacks to determine end time. 2023-04-28 00:00:20 +02:00
Bartosz Taudul
474dc6945e
Draw zigzags using bitmaps. 2023-04-27 23:17:35 +02:00
Bartosz Taudul
42aeece7fd
Allow generating texture mip maps. 2023-04-27 23:17:34 +02:00
Bartosz Taudul
d131f22354
Special-case creating zigzag texture. 2023-04-27 23:17:34 +02:00
Bartosz Taudul
52e3ae719d
Remove missed plot vector sorting during draw. 2023-04-27 17:36:11 +02:00
Bartosz Taudul
5f66cd8718
Don't use delay and resolution when processing GPU zones. 2023-04-26 00:50:13 +02:00
Bartosz Taudul
745ca83de6
PreprocessLocks() doesn't use yPos. 2023-04-26 00:47:50 +02:00
Bartosz Taudul
798249c81c
Remove error indicators for CPU zones. 2023-04-26 00:46:45 +02:00
Bartosz Taudul
72b1ff6477
Early exit on empty plots. 2023-04-25 00:35:53 +02:00
Bartosz Taudul
6aa9169901
Reduce number of plot samples from 1024 to 256.
Having 1024 samples proved to be too slow.
2023-04-25 00:27:17 +02:00
Bartosz Taudul
3811c8ace4
Remove redundant check.
There is already check for zoneFree being non-nullptr, so it makes no sense
to check zoneAlloc for that again, if it has to match zoneFree.
2023-04-25 00:04:59 +02:00
Bartosz Taudul
c8c6646f52
Simplify condition. 2023-04-25 00:03:48 +02:00
Bartosz Taudul
88cb43ad84
Don't write what is never read. 2023-04-25 00:00:30 +02:00
Bartosz Taudul
def30228c9
Draw plots using preprocessed draw lists. 2023-04-24 23:28:29 +02:00
Bartosz Taudul
96800a2753
Do not merge small groups of plot points (up to three). 2023-04-24 23:28:29 +02:00
Bartosz Taudul
616992a6d5
Do not include DPI scaling when grouping plot points. 2023-04-24 23:28:29 +02:00
Bartosz Taudul
102bb9f8a8
Include before-start plot item, so that the plot doesn't begin abruptly. 2023-04-24 23:28:28 +02:00
Bartosz Taudul
8eb2cc83b3
Push plot draw list to DrawPlot(). 2023-04-24 23:28:28 +02:00
Bartosz Taudul
8f5022c3c8
Calculate draw lists for plots. 2023-04-24 23:28:28 +02:00
Bartosz Taudul
0217c06377
Cosmetics. 2023-04-24 23:28:28 +02:00
Bartosz Taudul
ac29cffd3a
Fix assert condition. 2023-04-20 21:41:15 +02:00
Bartosz Taudul
7797557e8c
Don't pass memname parameter to functions handling allocation changes. 2023-04-16 18:12:14 +02:00
Bartosz Taudul
38b7aab4ef
Remove unused parameters from various payload handling functions. 2023-04-16 18:08:48 +02:00
Bartosz Taudul
3b00e55235
Rename IsThreadStringRetrieved -> IsFailureThreadStringRetrieved.
IsThreadStringRetrieved() interface suggested that it can be used for
checking any thread state, as it had an uint64_t id parameter.

The implementation ignored this parameter and checked the status of
failure thread only. This was never an issue because the code using
this function was only checking for the failure thread state.

Fixed by renaming the function to explicitly state what it does and
removing the thread id parameter.
2023-04-16 17:49:21 +02:00
Bartosz Taudul
b64bab197a
No need for GetZoneName() with GpuEvent + srcloc parameters. 2023-04-16 17:46:15 +02:00
Bartosz Taudul
08e6248299
CalcZoneTimeDataImpl() doesn't need zone parameter. 2023-04-16 17:40:16 +02:00
Bartosz Taudul
8d565e46d6
HandleTimelineMouse() doesn't need pxns parameter. 2023-04-16 17:36:04 +02:00
Bartosz Taudul
dec4713854
ListMemData() doesn't use id parameter. 2023-04-16 17:30:53 +02:00
Bartosz Taudul
adb2f9a664
GetFrameTreeItemNoGroup() doesn't need worker paramater. 2023-04-16 17:23:19 +02:00
Bartosz Taudul
31b3fcd1fe
View::InitTextEditor() doesn't need font parameter. 2023-04-16 17:21:03 +02:00
Bartosz Taudul
1c13c1ee8f
ThreadCompress::Load() doesn't need fileVer. 2023-04-16 17:17:07 +02:00
Bartosz Taudul
f60e51c91b
Fix std::move() usage. 2023-04-16 16:47:47 +02:00
Bartosz Taudul
a0221c8660
Pass function objects through const references. 2023-04-16 16:44:18 +02:00
Bartosz Taudul
5aaa4fcaf7
Use draw list data to draw locks. 2023-04-15 22:56:44 +02:00
Bartosz Taudul
788d9b77fc
Use proper start time to determine if break combining locks.
Without this correction the code would combine all lock regions according
to the minimum visibility range rules, and assign the combined area the
highest lock state within all items. This could produce quote long combined
lock regions, where apparently lock contention happened.

Combined lock regions should instead be split to show exactly where the
lock contention is present. Combining is still performed here, but only
within the minimum visibility range.

This new behavior was also present previously, but was mistakenly omitted
during code refactor.
2023-04-15 22:56:44 +02:00
Bartosz Taudul
e68214a88a
Change LockState to bitmask. 2023-04-15 22:56:44 +02:00
Bartosz Taudul
f7a8998663
Push locks draw lists to DrawThread(). 2023-04-15 22:56:44 +02:00
Bartosz Taudul
7f301dfec0
Precalculate draw lists for locks. 2023-04-15 22:56:44 +02:00
Bartosz Taudul
9b270c8e11
Another fix for determining if there's CPU usage data to draw. 2023-04-15 22:56:44 +02:00
Bartosz Taudul
f0acb73d09
Add accessor for active lock info window lock id. 2023-04-15 22:56:43 +02:00
Bartosz Taudul
d737b911e9
Make View::Vis() public. 2023-04-15 22:56:43 +02:00
Bartosz Taudul
6e815d13a0
Move common lock helper functions to a separate header. 2023-04-15 22:56:43 +02:00
Bartosz Taudul
4c0e6fe3ca
Merge pull request #544 from simplyWiri/timeline-scrolling-tweak
Clamp scrolling to the difference between the deepest zone near the m…
2023-04-13 11:35:08 +02:00
Bartosz Taudul
f17b44c212
Take DPI scaling into account when drawing thread migration lines. 2023-04-07 22:37:23 +02:00
Bartosz Taudul
492e6611b9
No need to perform domain conversion.
Pixel values will be needed anyways later on. It doesn't make sense to
perform comparison in time domain here.
2023-04-07 22:37:23 +02:00
Bartosz Taudul
d0ffca56bf
Fix logic determining if there's CPU core usage data to draw. 2023-04-07 22:37:22 +02:00
Bartosz Taudul
1b824797a9
Do not project running regions end time to last time.
Just display known running regions, keeping the unended ones infinitely
collapsed. This makes the CPU core usage graph possibly display wrong
data at the end of capture. Note that this behavior was also present in
previous releases.
2023-04-07 22:37:22 +02:00