Commit Graph

526 Commits

Author SHA1 Message Date
Bartosz Taudul
48e08acb62 Add C API for frame markup. 2019-06-24 21:03:39 +02:00
Bartosz Taudul
ee99ce833c Implement memory allocation tracking for C API. 2019-06-24 21:03:39 +02:00
Bartosz Taudul
281477f7f9 Tokens must be retrieved for each enqueue. 2019-06-24 20:12:14 +02:00
Bartosz Taudul
06a41708a7 Move TLS accesses close together. 2019-06-24 19:38:44 +02:00
Bartosz Taudul
c4f0965851 Don't use cached thread id to retrieve main thread id. 2019-06-24 19:38:07 +02:00
Bartosz Taudul
a56c47a6a0 Store thread handle in a thread local variable.
This saves us a non-inlineable function call. Thread local block is
accessed anyway, since we need to get the token, so we already have the
pointer and don't need to get it a second time (which is done inside
Windows' GetCurrentThreadId()). We also don't need to store the thread
id in ScopedZone anymore, as it was a micro-optimization to save us the
second GetThreadHandle() call.

This change has a measurable effect of reducing enqueue time from ~10 to
~8 ns.

A further optimization would be to completely skip thread handle
retrieval during zone capture and do it instead on retrieval of data
from the queue. Since each thread has its own producer ("token"), the
thread handle should be accessible during the dequeue operation. This is
a much more invasive change, that would require a) modification of the
queue, b) additional processing of dequeued data to inject the thread
handle.
2019-06-24 19:19:47 +02:00
Bartosz Taudul
fd9fc880a6 Send current time in on-demand welcome message. 2019-06-21 19:39:41 +02:00
Bartosz Taudul
5309e6d94a Broadcast client activity time. 2019-06-18 20:46:12 +02:00
Bartosz Taudul
aa5259b20a Use the same port (8086) for both TCP and UDP traffic. 2019-06-18 20:28:03 +02:00
Bartosz Taudul
0e5a7263d9 Define broadcast message, add versioning. 2019-06-18 20:26:40 +02:00
Bartosz Taudul
0b394c3f53 Don't need to keep last broadcast time in Profiler class. 2019-06-18 20:15:09 +02:00
Bartosz Taudul
11dc8e67e5 Change broadcast rate from 5s to 3s. 2019-06-17 19:57:17 +02:00
Bartosz Taudul
6bf8081f5b Remove debug leftovers. 2019-06-17 19:52:44 +02:00
Bartosz Taudul
de058d2a0d Don't hardcode broadcast port. 2019-06-17 18:37:34 +02:00
Bartosz Taudul
1b3b3a94a2 Broadcast protocol version and process name. 2019-06-17 18:34:35 +02:00
Bartosz Taudul
0b9ef7e514 Disable broadcast if TRACY_NO_BROADCAST is defined. 2019-06-17 18:18:58 +02:00
Bartosz Taudul
e609c0fdce UDP broadcast loop. 2019-06-17 02:25:09 +02:00
Bartosz Taudul
014c3ed63b Use non-reference, optimized NEON ETC1 compression. 2019-06-15 15:35:57 +02:00
Bartosz Taudul
ab4e99229d Indicate whether client is running on apple shitware. 2019-06-13 14:05:15 +02:00
Bartosz Taudul
e5d5abf59a Add NEON path for ETC1 compression. 2019-06-13 02:04:19 +02:00
Bartosz Taudul
d3e0163dd4 Add byteswap for apple. 2019-06-12 16:54:44 +02:00
Bartosz Taudul
37d1457b44 Frame image may need flipping. 2019-06-12 15:28:32 +02:00
Bartosz Taudul
04dd33f5c4 Fix mismatched linkage. 2019-06-11 23:51:12 +02:00
Rokas K. (rku)
c4e05b6264 Merged in rokups/tracy/dllimport-cleanup (pull request #36)
Clean up imported functions in multi-dll projects.

Approved-by: Till Rathmann <till.rathmann@gmx.de>
2019-06-11 15:04:34 +00:00
Bartosz Taudul
57b8b425ba Discard send buffer data after disconnect. 2019-06-10 02:11:29 +02:00
Bartosz Taudul
80dff1ede1 Add connection id for on-demand mode.
Long-lived zones could send their end events without begin events in a
following scenario:

1. On-demand connection is made.
2. Zone begin is emitted, m_active is set to true.
3. Connection is terminated.
4. A new connection is made.
5. Zone end is emitted, because m_active is true.

To this point it was assumed that all zone end events will happen before
a new connection is made, but it's not necessarily true.
2019-06-09 17:15:47 +02:00
Bartosz Taudul
0db9c73d76 Immediately react to connection termination. 2019-06-09 16:51:39 +02:00
Bartosz Taudul
cc5bad294a More strict memory ordering for on-demand connection status. 2019-06-09 16:48:00 +02:00
Bartosz Taudul
e2d42fae2f We're done here, don't try to send termination request. 2019-06-09 16:25:52 +02:00
Bartosz Taudul
496f866add Don't send data when connection is terminated.
There are only two cases for which HandleServerQuery() returns false.
Either data can't be read from the socket (which is checked by HasData()
call before calling HandleServerQuery()), or if the server sent
termination query. In both these cases there's no need to send data
anymore.
2019-06-09 16:19:40 +02:00
Bartosz Taudul
23e7850162 Make DequeueStatus enum class. 2019-06-09 16:14:30 +02:00
Bartosz Taudul
34d89d39a1 Prevent double freeing of socket. 2019-06-09 16:10:49 +02:00
Bartosz Taudul
139299389b Add comments to client connection handling. 2019-06-09 16:10:49 +02:00
Bartosz Taudul
4c2ff80ac8 Restore frame counting for on-demand mode. 2019-06-09 15:23:01 +02:00
Bartosz Taudul
00a468162d Fix signed/unsigned comparison. 2019-06-08 00:57:25 +02:00
Bartosz Taudul
9ef128995a Add AVX2 version of etcpak. 2019-06-08 00:50:39 +02:00
Bartosz Taudul
7e9539ef2d AVX implies SSE 4.1. 2019-06-08 00:39:19 +02:00
Bartosz Taudul
784c4da53a Include frame offset in frame image message. 2019-06-07 20:09:29 +02:00
Rokas Kupstys
9bd1037347 Clean up imported functions in multi-dll projects. 2019-06-07 19:50:08 +03:00
Bartosz Taudul
d271634a95 Keep one ETC1 compression buffer. 2019-06-07 01:29:24 +02:00
Bartosz Taudul
34a6fe7055 _bswap may be already defined. 2019-06-07 01:07:51 +02:00
Bartosz Taudul
a654b642ef Compress frame images to ETC1 before sending. 2019-06-07 00:31:51 +02:00
Bartosz Taudul
aff3246f82 Add ETC1 compressor. 2019-06-07 00:31:51 +02:00
Bartosz Taudul
e5bb6011c5 Frame image transfer prototype. 2019-06-06 21:39:54 +02:00
Bartosz Taudul
b3812146cb Fix atomics initialization. 2019-05-27 14:09:55 +02:00
Bartosz Taudul
340837e202 Callstack decode for android api <= 21.
libbacktrace/elf.cpp:3249:3: error: use of undeclared identifier 'dl_iterate_phdr'
2019-05-22 14:14:30 +02:00
Bartosz Taudul
84efe070fe Make callstack logic more obvious. 2019-05-22 14:05:44 +02:00
Bartosz Taudul
efc54babe3 Transfer of colored messages. 2019-05-10 20:17:44 +02:00
Bartosz Taudul
9ec8704dad Don't include LZ4 headers in tracy headers.
The LZ4 implementation is wrapped in tracy namespace, but it also adds
some defines, which may conflict with other LZ4 implementations.
2019-05-01 12:57:42 +02:00
Bartosz Taudul
2c9d9d0d27 /proc/stat might be inaccessible. 2019-04-04 15:25:26 +02:00
Bartosz Taudul
302ad87686 Fix typo. 2019-03-21 22:06:37 +01:00
Bartosz Taudul
94ed1c637c Try to check if cntcvt reads are monotonic.
https://lore.kernel.org/patchwork/patch/904607/
2019-03-21 21:59:51 +01:00
Bartosz Taudul
7f57b3dba9 Fallback to reading CLOCK_MONOTONIC_RAW, if available. 2019-03-21 21:49:23 +01:00
Bartosz Taudul
17fb589415 Try dladdr() resolution if libbacktrace fails. 2019-03-05 20:43:47 +01:00
Bartosz Taudul
49f1277e55 Cast void* to char*. 2019-03-05 20:20:55 +01:00
Bartosz Taudul
afe2fad1a7 Send native callstack before allocated one. 2019-03-05 19:18:43 +01:00
Bartosz Taudul
4509412efb Fast callstack retrieval for linux. 2019-03-05 18:56:39 +01:00
Bartosz Taudul
1bbf296351 Use fast callstack frame decoding to cut callstack. 2019-03-05 02:42:51 +01:00
Bartosz Taudul
cb62b63fe2 Fast callstack frame decoder.
Returns only function name, doesn't retrieve inlined functions, doesn't
perform demangling.
2019-03-05 02:42:51 +01:00
Bartosz Taudul
b11f932078 Cut lua callstack at lua_pcall. 2019-03-05 02:42:51 +01:00
Bartosz Taudul
ec73178733 Move callstack cutting to a separate function. 2019-03-05 02:42:51 +01:00
Bartosz Taudul
d229c1bc1b Send native callstack along with allocated callstack. 2019-03-05 02:42:50 +01:00
Bartosz Taudul
bef31ba073 Separate message for zone begin with alloc src loc and callstack. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
e3c31e4a4e Send callstack alloc payload. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
d863245b49 Serialize discontinuous frame messages. 2019-02-28 19:21:23 +01:00
Bartosz Taudul
b89db6e926 Don't send CPU usage data when there's no readings. 2019-02-25 15:11:35 +01:00
Bartosz Taudul
963d2b3ca8 CPU usage getter for apple. 2019-02-25 15:04:06 +01:00
Bartosz Taudul
85f29a0f22 Collect system time before server connection is made. 2019-02-24 19:12:17 +01:00
Bartosz Taudul
bafc8a1330 Implement getting CPU usage in linux. 2019-02-24 19:02:49 +01:00
Bartosz Taudul
0b9fa8f3c8 Track CPU usage also on cygwin. 2019-02-21 23:11:09 +01:00
Bartosz Taudul
9f4f5bcb63 CPU usage retrieval. 2019-02-21 22:45:53 +01:00
Bartosz Taudul
938d8ce69e Properly initialize demangled pointer. 2019-02-21 15:04:17 +01:00
Bartosz Taudul
44009b6fda Use mach_absolute_time() to get time on iOS. 2019-02-21 14:45:13 +01:00
Bartosz Taudul
e839a3153f Just use getprogname(). 2019-02-21 11:40:56 +01:00
Bartosz Taudul
c4d46f1c24 No libproc.h on iOS. 2019-02-21 11:33:45 +01:00
Till Rathmann
9d7c4a2861 Merged in tillrathmann/tracy (pull request #33)
Fixed DLL support
2019-02-20 17:24:12 +00:00
Till Rathmann
29140afe0c Fixed compiler warnings. 2019-02-20 17:50:49 +01:00
Till Rathmann
77abc3bffd Fixed DLL support. 2019-02-20 16:15:13 +01:00
Bartosz Taudul
22329ae5d9 Collect call stacks on apple. 2019-02-20 16:01:41 +01:00
Bartosz Taudul
34d24b16bb Retrieve memory size on apple. 2019-02-20 13:52:55 +01:00
Bartosz Taudul
9c966b6224 Process name retrieval on apple. 2019-02-20 13:13:29 +01:00
Bartosz Taudul
8f75839d66 Fix apple target detection. 2019-02-20 12:43:48 +01:00
Bartosz Taudul
5afadcb11d Fix if condition. 2019-02-19 21:51:41 +01:00
Bartosz Taudul
ef5e30056e Implement delayed initialization of the profiler.
Enabled on osx, ios.
2019-02-19 20:43:30 +01:00
Bartosz Taudul
3f914834b7 Hide rest of statics. 2019-02-19 19:33:37 +01:00
Bartosz Taudul
9fabafbeca Fix DLL code. 2019-02-19 18:46:59 +01:00
Bartosz Taudul
2421e05c27 Prevent direct access to s_profiler. 2019-02-19 18:38:08 +01:00
Bartosz Taudul
d865d1cc87 Disallow direct access to s_token. 2019-02-19 18:27:00 +01:00
Bartosz Taudul
44753dd4ac thread_local implies static. 2019-02-19 16:52:05 +01:00
Bartosz Taudul
c7e64bb8a8 Replace select() with poll(). 2019-02-10 15:45:23 +01:00
Bartosz Taudul
9dd869a5eb Fix call stacks on cygwin. 2019-02-02 13:58:17 +01:00
Bartosz Taudul
653caf159f Assign return value only once. 2019-01-29 22:21:01 +01:00
Bartosz Taudul
a708bebbfd Use language neutral header for callstack capability detection.
This fixes call stack collection in C API when TRACY_CALLSTACK is
defined.
2019-01-27 13:41:32 +01:00
Bartosz Taudul
01bddf95a6 Trace inline function calls on MSVC call stacks. 2019-01-26 23:50:58 +01:00
Bartosz Taudul
49b0a3500d Enable tracing incline functions in callstacks. 2019-01-20 19:33:37 +01:00
Bartosz Taudul
ddad475c19 Make it possible to store multiple frames at single frame address. 2019-01-20 19:11:48 +01:00
Bartosz Taudul
bf7cc0a0d5 Add missing header for PRIxMAX. 2019-01-20 17:17:09 +01:00
Bartosz Taudul
9e7714c45a Decode callstack frames using libbacktrace. 2019-01-20 16:55:59 +01:00
Rokas Kupstys
36c76456f7 Fix mistakes from MingW support commit. 2019-01-19 15:03:43 +02:00
Rokas Kupstys
8157e3a0b3 Fix builds with MingW. 2019-01-19 13:53:10 +02:00