Commit Graph

80 Commits

Author SHA1 Message Date
Bartosz Taudul
9ba7381030 Small speedup for ReadNumber(). 2020-08-18 20:07:15 +02:00
Bartosz Taudul
4d4b6c7ac9 Use memchr() to find newline in memory block. 2020-08-18 19:51:02 +02:00
Bartosz Taudul
28aae73f74 RingBuffer has const size, so use template.
This eliminates division.
2020-08-15 02:43:18 +02:00
Bartosz Taudul
16ad6ee2ac Tune number of ETW kernel buffers. 2020-08-13 15:26:36 +02:00
Bartosz Taudul
9258e2ced0 Restore TSC usage on Linux. 2020-08-13 01:41:05 +02:00
Bartosz Taudul
98fe63b5eb Increase sampling frequency to 10 kHz.
Works fine on bare metal.
2020-08-12 22:18:59 +02:00
Bartosz Taudul
f7574c5adc Reduce ring buffer size to workaround sigbus on android. 2020-08-12 18:46:19 +02:00
Bartosz Taudul
649994706b Use clock monotonic raw on Linux.
Because Linux kernel interfaces are fucking stupid.
2020-08-12 16:49:30 +02:00
Bartosz Taudul
d48b3187b1 Call stack sampling using perf events. 2020-08-12 16:49:30 +02:00
Bartosz Taudul
90ed18222a Use proper allocator. 2020-08-12 01:30:22 +02:00
Bartosz Taudul
b1b7be0a46 Adjust kernel tracing threads priorities. 2020-08-12 01:27:59 +02:00
Bartosz Taudul
1f4bfb68a0 Increase Linux sys trace per-cpu buffer size to 4 MB. 2020-08-12 01:19:10 +02:00
Bartosz Taudul
f07eebebf7 ETW threads are time critical. 2020-08-05 15:34:39 +02:00
Bartosz Taudul
062bb3044f No need for lean callstack sample message. 2020-07-26 14:28:13 +02:00
Bartosz Taudul
5d748f3568 Don't calculate known strings length. 2020-07-21 20:58:58 +02:00
Andrey Voroshilov
175ec3e3d8 Moving ThreadExitHandler to a commonly accessible space, adding thread handler usage to SysTrace worker threads 2020-07-18 18:24:49 -07:00
Bartosz Taudul
0da6342a86 Trace vsyncs. 2020-06-27 19:56:23 +02:00
Bartosz Taudul
1fff99ebb0 Fix memory leak. 2020-06-27 17:43:08 +02:00
ikrima
707117c04f Build sanitization & Static analysis warning fixes
- Wrapping FORCEINLINE & WIN32_LEAN_AND_MEAN definess with ifndef bc other libraries may define it and trigger redefinition warning
- Possibly contentious given tone in the manual (:P) but removing variable shadowing in TracySysTrace.cpp
  - Alternate Solution: Add #define TRACY_FORCE_SILENT_WARNINGS toggle-able flag. If flag is enabled, push/pop warning disables that have to be included in client code
2020-05-02 14:52:57 -07:00
Bartosz Taudul
b69aaf04e9 Add support for QPC timer. 2020-04-07 22:01:31 +02:00
Bartosz Taudul
8d9a611874 Get rid of unicode ifdefs. 2020-04-07 21:35:37 +02:00
Bartosz Taudul
69c5e667ae Dynamically load Get/SetThreadDescription. 2020-04-07 21:33:03 +02:00
Bartosz Taudul
9b8eb69886 Apparently sampled call stacks may be empty. 2020-03-28 16:09:44 +01:00
Bartosz Taudul
6c0c508280 Ignore kernel-only stacks.
It is common to receive duplicate stack traces for the same timestamp
(and thread), one containing proper user-space stack, and the second one
containing only kernel frames. Discard the second one, as there's no
documentation how this should be interpreted and the kernel stack is
mostly useless.
2020-03-21 15:25:30 +01:00
Bartosz Taudul
c7afda2562 Exit processing loops when trace has stopped. 2020-03-10 18:56:49 +01:00
Bartosz Taudul
2b7f5091f1 Store sampling period. 2020-02-25 23:08:52 +01:00
Bartosz Taudul
24cd73e366 Fix linux tracing with long pids. 2020-02-23 18:23:53 +01:00
Bartosz Taudul
0fa1d25d98 Disable trace annotations. 2020-02-23 18:20:48 +01:00
Bartosz Taudul
d0930e9053 Use maximum possible sampling rate. 2020-02-22 19:08:15 +01:00
Bartosz Taudul
4502858407 Use maximum possible etw buffer size (1MB). 2020-02-22 18:52:38 +01:00
Bartosz Taudul
3b0ed5337b Provide TraceSetInformation() definition for cygwin. 2020-02-22 16:03:07 +01:00
Bartosz Taudul
baf8e6fe80 No support for sampling on 32-bit windows.
Note that 32-bit applications running on 64-bit windows will perform
sampling.
2020-02-22 14:16:04 +01:00
Bartosz Taudul
9e9c7db5b1 Send sampled call stacks. 2020-02-22 13:42:09 +01:00
Bartosz Taudul
9b9474ada1 Request stack traces for execution sampling events. 2020-02-22 13:13:49 +01:00
Bartosz Taudul
28d0f387ea Setup execution sampling profiling. 2020-02-22 13:13:32 +01:00
Bartosz Taudul
ad77b4f73b Store current process id. 2020-02-22 13:11:16 +01:00
Bartosz Taudul
1f671fbacc Keep sys trace variables local. 2020-02-22 13:08:35 +01:00
Bartosz Taudul
539ccf5a61 Check provider id in etw callback. 2020-02-22 12:56:33 +01:00
Bartosz Taudul
55d03cb03e Hide async queue setup/commit behind macros. 2020-01-19 15:06:11 +01:00
Bartosz Taudul
4f8eb53e8b Capture exact tid to pid mapping on windows. 2020-01-14 02:06:22 +01:00
Bartosz Taudul
f34609fd9b Set per-cpu kernel buffer size to 512 KB.
The default setting was causing events to be lost on Android.
2019-11-03 21:52:20 +01:00
Bartosz Taudul
b8d459d48b Use proper string size (for consistency).
On Android code path this value is ignored.
2019-11-03 21:51:49 +01:00
Bartosz Taudul
c3870f8837 Use proper type. 2019-10-10 20:30:08 +02:00
Bartosz Taudul
707f113bda Add missing NOMINMAX definitions. 2019-10-10 20:29:06 +02:00
Bartosz Taudul
e481b5ba22 Add missing thread sent indication. 2019-10-04 19:18:47 +02:00
Bartosz Taudul
130365f4ff Inject tracy_systrace into filesystem and use instead of cat.
Statistics for a one-minute trace:

  Capture tool | Running time | Running regions
---------------+--------------+-----------------
      cat      |    25.11 s   |     392,300
tracy_systrace |    10.41 s   |      12,249
2019-09-27 15:51:29 +02:00
Bartosz Taudul
fbeee3cf61 Fix (?) invalid function pointer signature. 2019-08-26 17:59:58 +02:00
Bartosz Taudul
78127dc357 System threads only allow limited information queries. 2019-08-25 00:33:22 +02:00
Bartosz Taudul
deb59b4c38 Somehow fix event ordering. 2019-08-24 01:43:55 +02:00
Bartosz Taudul
1e74a89924 Check if there's data to read from kernel.
Reading from kernel pipe, while being a blocking operation, spin locks the
thread.
2019-08-24 01:06:21 +02:00