Bartosz Taudul
4d40a9cb53
Track locking thread on server side.
2022-07-18 02:06:19 +02:00
Bartosz Taudul
06c7984a16
Move all client headers and sources to public/ directory.
2022-07-17 15:47:38 +02:00
Bartosz Taudul
68de009e0e
Extract common reference time processing to a function.
2022-06-22 01:56:31 +02:00
Bartosz Taudul
183cbf12a0
Subtract base time directly in TscTime().
2022-06-22 01:56:31 +02:00
Bartosz Taudul
331f18345f
Add braces around initialization of subobjects.
2022-06-16 15:29:39 +02:00
Bartosz Taudul
579339dd24
Retrieve correct symbol address.
2022-05-02 01:12:35 +02:00
Bartosz Taudul
aa2bbfe5f9
Transfer executable image name in source file queries.
2022-05-01 14:30:18 +02:00
Bartosz Taudul
fd55c1e975
Pass symbol image name to CacheSource().
2022-05-01 14:25:07 +02:00
Bartosz Taudul
95cf143336
Remove unused variables.
2022-04-26 22:01:09 +02:00
Bartosz Taudul
c9240c100d
Fix initialization order.
2022-04-26 22:01:09 +02:00
Bartosz Taudul
18112d3c66
Drop support for pre-0.7 traces.
2022-04-18 13:59:48 +02:00
Bartosz Taudul
95187c94e9
Bump protocol to simplify IsQueryPrio().
2022-04-18 13:39:49 +02:00
Bartosz Taudul
381f706796
Remember if there is branch retirement data.
2022-04-01 18:46:46 +02:00
Bartosz Taudul
2b47c2a64e
Send priority queries before other queued up queries.
...
This ensures that simple to handle yet important queries are answered in a
timely manner. Previously an onslaught of slow symbol-related queries could
block e.g. zone name resolving for a couple of minutes.
2022-03-31 00:06:49 +02:00
Bartosz Taudul
5ae9e791a5
Make easy check first.
2022-03-31 00:06:49 +02:00
Bartosz Taudul
d691cb2a06
Define a list of priority queries.
2022-03-31 00:02:02 +02:00
Bartosz Taudul
a335efe9e6
Implement scanning for source files missing in cache.
2022-03-30 16:07:15 +02:00
Bartosz Taudul
e086488928
Extract source file caching functionality.
2022-03-30 16:06:35 +02:00
Thomas Bernard
79e146c957
Avoid accessing address 0 when reporting a failure.
2022-03-10 14:28:31 +01:00
Bartosz Taudul
df96293477
Create GPU source location zones stats entry, if not present.
...
In case of CPU statistics data, this entry is created during creation of a
source location. This won't be done for GPU zones, as it would needlessly
expand the number of held entries. This is assuming the number of GPU zones
is significantly less than the number of CPU zones.
2022-01-29 15:45:25 +01:00
Bartosz Taudul
6d55f79109
Save source location data counts.
2022-01-29 15:14:43 +01:00
Bartosz Taudul
ba87929074
Perform GPU statistics reconstruction.
...
Note: Zone counts are currently being calculated, but they are not being
saved. Proper usage of this data (as is performed in the CPU counterpart)
would remove the possibility of insertion of new entries into the map in
ReconstructZoneStatistics().
2022-01-29 00:48:01 +01:00
Bartosz Taudul
28d029f820
Collection of GPU statistics.
2022-01-29 00:15:33 +01:00
Bartosz Taudul
f9279afaec
GPU zone counting.
2022-01-29 00:15:32 +01:00
Bartosz Taudul
f1095bba12
GPU statistics data accessors.
2022-01-29 00:15:32 +01:00
Bartosz Taudul
db64a5fa7e
Explicitly save context switch callstack samples.
2021-12-21 15:24:11 +01:00
Bartosz Taudul
c5654c333a
Process explicit context switch callstack samples.
2021-12-21 14:18:32 +01:00
Bartosz Taudul
3f1c540b3a
Further split ProcessCallstackSampleImpl().
2021-12-21 14:18:14 +01:00
Bartosz Taudul
9b624049a5
Immediately disconnect connection on disconnect request.
...
The disconnect handling logic is broken on the client, after the symbol
resolution was moved to a separate thread. Use workaround until a proper fix
is available.
2021-12-11 13:15:50 +01:00
Bartosz Taudul
bbbae35925
Only identify samples when IdentifySamples is set.
2021-12-04 15:16:17 +01:00
Bartosz Taudul
c98680ad0b
Add support for sample data without time.
2021-12-02 02:06:05 +01:00
Bartosz Taudul
d8a611e952
Also calculate sample parents without inlines.
2021-11-27 17:47:09 +01:00
Bartosz Taudul
687d4defc0
Cosmetics.
2021-11-27 17:46:43 +01:00
Bartosz Taudul
355a179678
Merge callstack samples with the same timestamp.
2021-11-27 15:29:33 +01:00
Bartosz Taudul
4f735e1ae2
Extract callstack merging.
2021-11-27 15:06:58 +01:00
Bartosz Taudul
a02575322f
Collect child sample addresses.
2021-11-27 02:03:59 +01:00
Bartosz Taudul
4bde9022e1
Properly acknowledge unavailable symbol code.
2021-11-25 22:44:56 +01:00
Bartosz Taudul
abdd6020ba
No need to remember addresses of symbol code queries.
2021-11-25 22:35:43 +01:00
Bartosz Taudul
b4da047355
Don't filter out kernel symbols from code transfer.
2021-11-25 22:28:05 +01:00
Bartosz Taudul
8d65b190d6
Handle frame image dictionary creation failures.
2021-11-20 03:30:28 +01:00
Bartosz Taudul
641338cb3c
Remove postponed samples when they are handled.
2021-11-14 23:55:44 +01:00
Bartosz Taudul
710a488af0
Handle postponed samples with SortedVector.
2021-11-14 23:48:50 +01:00
Bartosz Taudul
f2380590f9
Limit server query space to 8K entries.
...
In the default configuration this limit is unlikely to be hit. On Windows the
send buffer is 64 KB, which results in ~5K entries. On Linux the buffer is a
bit higher and the number of entries is lower than 7K.
2021-11-14 18:14:52 +01:00
Bartosz Taudul
ffa8bf4d75
Use table instead of map to track reentrant calls.
2021-11-14 16:42:11 +01:00
Bartosz Taudul
cb004e9cc0
Sort source location zones only when needed.
2021-11-14 16:05:55 +01:00
Bartosz Taudul
e0872ce61b
Cosmetics.
2021-11-14 15:51:27 +01:00
Bartosz Taudul
864d7e4e47
Sort symbols list only when actually needed.
2021-11-14 13:05:05 +01:00
Bartosz Taudul
b978a7c652
Sort plot data only when needed (i.e. to draw).
2021-11-14 13:01:27 +01:00
Bartosz Taudul
81c66ad126
Fix samples order on save, not load.
...
Sorting samples during load was a major mistake, as three different background
processing threads were concurrently accessing the samples table, and it was
being sorted in one of them!
2021-11-13 03:25:47 +01:00
Bartosz Taudul
0ab73e2aa7
Detect context switch samples during reconstruction.
2021-11-13 03:15:20 +01:00
Bartosz Taudul
d8d6423266
Context switch samples counting.
2021-11-13 02:47:39 +01:00
Bartosz Taudul
8ef212c26e
Determine if postponed callstacks are for context switches.
...
Samples are processed only when new context switch data has been received.
2021-11-13 02:44:54 +01:00
Bartosz Taudul
745b795d50
Detect context switch callstack samples.
...
Context switch callstack samples are not included in the sampling data
statistics (as these don't represent random sampling), but are rather put into
a separate dedicated data structure.
For this to work, a complete context switch data has to be available for the
callstack timestamp. There is no guarantee it will be present at the time it
is needed, so a second structure is added to allow postponing qualification of
callstacks.
2021-11-13 02:40:32 +01:00
Bartosz Taudul
5b799e0e45
Monitor when new context switch data is received.
2021-11-13 02:38:33 +01:00
Bartosz Taudul
00834ed32b
No need to pass time and callstack.
2021-11-13 02:26:11 +01:00
Bartosz Taudul
f925da5e01
Handle fiber enter -> enter case (without leave in between).
2021-11-06 21:14:37 +01:00
Bartosz Taudul
40cd5435df
Fix context switch reconstruction condition.
2021-11-06 20:49:15 +01:00
Bartosz Taudul
69e5cf796d
Construct faux context switch data from fiber events.
2021-11-06 20:38:16 +01:00
Bartosz Taudul
0075050679
Allow checking if thread is a fiber.
2021-11-06 19:02:02 +01:00
Bartosz Taudul
3ede2a1345
Explicit tracking of fiber state in ThreadData.
...
This replaces the use of hard-to-track global state with well-defined accessor
functionality.
2021-11-06 18:55:29 +01:00
Bartosz Taudul
4c774130ee
Allow direct switching from one fiber to another.
2021-11-04 17:51:32 +01:00
Bartosz Taudul
fceb065329
Fiber name transport.
2021-11-03 18:57:30 +01:00
Bartosz Taudul
211b202d8e
Process fiber entry and leave events.
2021-11-02 01:53:10 +01:00
Bartosz Taudul
b4e4c05088
Thread context data may be invalidated due to fibers.
2021-11-02 01:52:41 +01:00
Bartosz Taudul
d522af99b9
Threads may be mapped to fibers.
2021-11-02 01:51:54 +01:00
Bartosz Taudul
bb72bf10e9
Add fiber failures.
2021-11-02 01:47:31 +01:00
Bartosz Taudul
93b6d88c4c
Save/load fiber thread flag.
2021-11-02 01:46:29 +01:00
Bartosz Taudul
8f44f1c68b
Store fiber state is ThreadData.
2021-11-02 01:45:01 +01:00
Bartosz Taudul
8f6a911f1e
Save/load sum of values in plots.
2021-10-17 13:14:44 +02:00
Bartosz Taudul
0b190b1a69
Calculate sum of values in reconstructed memory plot.
2021-10-17 13:14:23 +02:00
Bartosz Taudul
04db76d5fd
Calculate plot values sum during data import.
2021-10-17 13:07:37 +02:00
Bartosz Taudul
0bd1364c2f
Calculate plot values sum.
2021-10-17 13:04:56 +02:00
Bartosz Taudul
a1511a39bd
Delta-encode code information pointers.
2021-10-16 16:29:06 +02:00
Bartosz Taudul
dfb1ce64df
Sample data inconsistency warning.
2021-10-16 16:15:19 +02:00
Bartosz Taudul
bcaac7b53f
Add ~2 second overflow grace period.
...
This fixes issues when the GPU is actually permitted to report out-of-order
timestamps (e.g. when tasks are scheduled by the GPU, instead of being forced
to execute in submission order).
2021-10-11 00:29:24 +02:00
Bartosz Taudul
d3905bd4bb
Add context to zone text failures.
2021-10-10 14:14:33 +02:00
Bartosz Taudul
930ef77ea9
Add zone value failure context.
2021-10-10 14:12:13 +02:00
Bartosz Taudul
9300934fa5
Separate zone value and text failures.
2021-10-10 14:05:21 +02:00
xavier
e4ce9f0f41
Include threadid in SampleDataRange
...
TODO: maybe make lists per thread to avoid increasing the packed structure by 2 bytes?
2021-09-23 21:03:56 +02:00
Bartosz Taudul
bcfc4a4fa7
Fix message thread assignment in import-chrome.
2021-09-23 18:08:03 +02:00
Bartosz Taudul
9a22b8e83c
Cosmetics.
2021-06-23 20:43:46 +02:00
Terence Rokop
66053e37f7
Add non-reentrant stats to SourceLocationZones
...
Extend SourceLocationZones with fields to track the count
and time of non-reentrant zone events -- that is, zone
events which were the only appearances (at the time) of
those zones on their threads' stacks.
2021-06-20 17:56:15 -07:00
Terence Rokop
c90e39e06e
Keep track of zone appearances on thread stacks
...
Start keeping track, using the previously-introduced
SrcLocCountMap, of the number of appearances of each zone
on each thread's stack at a given time.
2021-06-20 17:56:15 -07:00
Terence Rokop
1f0b4656f4
Introduce SrcLocCountMap
...
Add to ThreadData a map from source location to a counter,
which will be used to keep track of the number of
appearances of zones with the corresponding source locations
on each thread's stack.
2021-06-20 17:56:14 -07:00
Bartosz Taudul
846bde1a11
Narrow down search range.
2021-06-20 14:37:56 +02:00
Bartosz Taudul
15b42039bd
Add very early exit test.
2021-06-20 14:34:47 +02:00
Bartosz Taudul
d4b92e0fbe
Add early exit conditions.
2021-06-20 14:33:08 +02:00
Bartosz Taudul
a10d71b766
Switch loop order for better cache locality on the slow path.
2021-06-20 14:30:55 +02:00
Bartosz Taudul
a9a16b4d94
Narrow down search region.
2021-06-20 14:24:42 +02:00
Bartosz Taudul
22352dd29b
Select optimized path before entering loop.
2021-06-20 14:22:14 +02:00
Bartosz Taudul
5d86002f82
Calculate all CPU usage values in one go.
2021-06-20 14:19:18 +02:00
Bartosz Taudul
53111f9dd9
Save/load code symbol map.
2021-06-19 19:58:16 +02:00
Bartosz Taudul
ec3ee09f09
Add inline symbols map accessors.
2021-06-19 19:13:34 +02:00
Bartosz Taudul
654331a8c8
Create code address -> symbol map.
2021-06-19 19:07:57 +02:00
Bartosz Taudul
8e5a53a191
Merge remote-tracking branch 'origin/master' into hw
2021-06-19 12:19:10 +02:00
Andrey Voroshilov
d4d77006ac
Fix a crash in Worker c-tor when converting certain JSON files
2021-06-19 01:12:41 -07:00
Bartosz Taudul
d49da69972
Count kernel samples.
2021-06-17 01:47:19 +02:00
Bartosz Taudul
f145ca5897
Fix assert.
2021-06-16 01:39:43 +02:00
Bartosz Taudul
48fe6550a6
Kernel code is unreachable from user space.
2021-06-15 21:40:08 +02:00
Bartosz Taudul
5b642cad01
Implement combining sample callstacks.
...
This is required, because Windows will send two callstacks with the same
timestamp, one for kernel-space, second for user-space.
2021-06-15 02:25:12 +02:00