Commit Graph

212 Commits

Author SHA1 Message Date
Bartosz Taudul
c5ea9c744c Do not disable lz4 in debug builds. 2017-10-18 19:50:28 +02:00
Bartosz Taudul
6a2cbe2842 Rename DISABLE_LZ4 to TRACY_DISABLE_LZ4. 2017-10-18 19:50:22 +02:00
Bartosz Taudul
7c47edc64f Terminate connection handshake. 2017-10-18 18:48:51 +02:00
Bartosz Taudul
d942b7edf1 Don't exit until all data is sent. 2017-10-17 22:02:47 +02:00
Bartosz Taudul
652dccd163 Also no need to construct more than one welcome message. 2017-10-17 21:55:40 +02:00
Bartosz Taudul
5421164f33 No need to get process name more than once. 2017-10-17 21:53:09 +02:00
Bartosz Taudul
1e3476cf36 Transfer profiler initialization time. 2017-10-17 01:10:38 +02:00
Bartosz Taudul
51f5ae4796 More precise profiler init end time measurement. 2017-10-17 01:07:54 +02:00
Bartosz Taudul
0ed789825a Measure time of initialization start. 2017-10-17 01:07:34 +02:00
Bartosz Taudul
866081bf29 Initialize tracy before anything else. 2017-10-17 00:36:15 +02:00
Bartosz Taudul
9d01b508ed One more type cast. 2017-10-17 00:25:32 +02:00
Bartosz Taudul
8a6e4d2971 Change TRACY_DISABLE to TRACY_ENABLE.
By default tracy is now disabled.
2017-10-16 21:34:39 +02:00
Bartosz Taudul
518568a513 Move client/Tracy.hpp -> Tracy.hpp. 2017-10-16 21:28:38 +02:00
Bartosz Taudul
e04bd05606 Always use ShouldExit() to determine if worker should exit. 2017-10-16 21:21:42 +02:00
Bartosz Taudul
9f28205548 Use custom threading wrapper instead of std::thread.
std::thread may perform memory allocation when a thread is created (it
does so on MSVC). Tracy heap is managed by its own allocator and this
changes prevents accessing application heap.
2017-10-16 21:17:58 +02:00
Bartosz Taudul
2f8d3ff5eb Add minimal thread class implementation. 2017-10-16 21:17:58 +02:00
Bartosz Taudul
dafec48319 PAGE_SIZE is already defined in limits.h. 2017-10-16 21:17:58 +02:00
Bartosz Taudul
65c000718b Do not redefine assert macro. 2017-10-16 21:17:58 +02:00
Bartosz Taudul
31fc2335dd Silence some type mismatch warnings. 2017-10-16 21:17:58 +02:00
Bartosz Taudul
3554e4c4ac Prevent clash of likely/unlikely with possible macros. 2017-10-16 21:17:58 +02:00
Bartosz Taudul
5b9fcddfb3 String literal message transfer. 2017-10-15 13:06:49 +02:00
Bartosz Taudul
95439a726a Fix typo. 2017-10-15 13:06:20 +02:00
Bartosz Taudul
9a60c3fb6e Remove unused variable. 2017-10-14 20:03:55 +02:00
Bartosz Taudul
e496f24427 Use standard c++ features. 2017-10-14 18:48:35 +02:00
Bartosz Taudul
bded83e458 Don't include headers in a namespace. 2017-10-14 18:02:01 +02:00
Bartosz Taudul
dc25c46dee No need to init/destroy queue item memory. 2017-10-14 17:39:43 +02:00
Bartosz Taudul
472b5a521f Preallocation size is in number of elements, not bytes. 2017-10-14 17:33:05 +02:00
Bartosz Taudul
40bc4c8015 Missing include. 2017-10-14 17:21:14 +02:00
Bartosz Taudul
19011b3798 Use rpmalloc in concurrentqueue. 2017-10-14 17:19:27 +02:00
Bartosz Taudul
c497966c7f Use rpmalloc to allocate tracy client memory. 2017-10-14 17:15:18 +02:00
Bartosz Taudul
e8968efea7 Initialize rpmalloc. 2017-10-14 17:00:25 +02:00
Bartosz Taudul
b75317be7d Wrap malloc/free. 2017-10-14 16:52:05 +02:00
Bartosz Taudul
b117c56257 Wrap rpmalloc in tracy namespace. 2017-10-14 16:50:08 +02:00
Bartosz Taudul
709d86ad0c Add rpmalloc.
https://github.com/rampantpixels/rpmalloc/tree/master/rpmalloc
2592b551b26d0ac9d1c92db3c1ae6c0ce5cd447a
2017-10-14 16:43:26 +02:00
Bartosz Taudul
fa8030009f Store messages. 2017-10-14 14:28:04 +02:00
Bartosz Taudul
8c7b60fbe6 Allow sending text messages. 2017-10-14 13:23:13 +02:00
Bartosz Taudul
57afeb4588 Queue MUST allocate memory. 2017-10-13 20:33:53 +02:00
Bartosz Taudul
7f36bb6846 Mark unlikely code path.
It also changes MSVC behavior from generating two jumps to just one.
2017-10-13 20:24:11 +02:00
Bartosz Taudul
1aaab3c5e4 Use 32 bits to store lock id.
This makes queue item size 32 bytes. Queue operations can now be faster,
because multiplication by 33 is replaced by shift by 5.
2017-10-13 20:05:38 +02:00
Bartosz Taudul
ec789d60e8 Store source location color in 24 bits. 2017-10-13 19:59:18 +02:00
Bartosz Taudul
fe0366c792 Receive plot data. 2017-10-13 03:36:59 +02:00
Bartosz Taudul
cb0011755d Prevent type conversions. 2017-10-13 02:21:29 +02:00
Bartosz Taudul
f0484b50ca Plot data transfer. 2017-10-13 02:07:03 +02:00
Bartosz Taudul
737671adbf Remove lock announce message.
This removes problem with static initialization order of mutices vs
tracy.

Lock source location is now transferred in lock wait message.
2017-10-12 20:14:17 +02:00
Bartosz Taudul
c42106f4ff Add named version of TracyLockable. 2017-10-12 20:00:53 +02:00
Bartosz Taudul
e23da05a65 Workaround gcc stupidity. 2017-10-11 01:44:35 +02:00
Bartosz Taudul
77dfefb5d0 Remove one stack address load. 2017-10-11 01:27:22 +02:00
Bartosz Taudul
af3773dc9a Remove one level of indirection. 2017-10-11 01:04:21 +02:00
Bartosz Taudul
cc8b357f09 Avoid excessive stack operations for cpu query. 2017-10-10 23:21:30 +02:00
Bartosz Taudul
75457c1465 Remove +x flag from files. 2017-10-10 21:56:15 +02:00
Bartosz Taudul
2c252226fc Force proper initialization order on gcc. 2017-10-09 00:39:12 +02:00
Bartosz Taudul
ef525067c5 Mark tracy::Lockable<>::Mark() as const. 2017-10-06 17:14:57 +02:00
Bartosz Taudul
9736be0321 Force inline lock operations. 2017-10-06 17:05:31 +02:00
Bartosz Taudul
dcd89f894c Add lock marking. 2017-10-06 16:32:32 +02:00
Bartosz Taudul
5f9228d4e6 Fix typo. 2017-10-05 03:07:26 +02:00
Bartosz Taudul
06a08816bd Include data type in tracy::Lockable name. 2017-10-04 18:32:53 +02:00
Bartosz Taudul
8c90eab044 Let's not worry about lock memory reuse. 2017-10-04 16:51:51 +02:00
Bartosz Taudul
0011573fa9 Send lock events. 2017-10-04 16:45:46 +02:00
Bartosz Taudul
78f8425dc7 Announce lock creation. 2017-10-04 16:16:40 +02:00
Bartosz Taudul
a3ef369a56 Lockable wrapper. 2017-10-04 15:41:02 +02:00
Bartosz Taudul
f8e7f7ed83 Cygwin can't determine process name using winapi. 2017-10-04 01:22:22 +02:00
Bartosz Taudul
3f0bd793fd Send program start time, not connection time. 2017-10-04 00:34:05 +02:00
Bartosz Taudul
b2252de9c8 Send and display program execution date. 2017-10-03 23:26:41 +02:00
Bartosz Taudul
cf07383db8 Send program name in welcome message. 2017-10-03 23:17:58 +02:00
Bartosz Taudul
6485457518 Process name getter. 2017-10-03 23:17:16 +02:00
Bartosz Taudul
b1aa16763b Prevent accesing TLS data twice on gcc. 2017-10-03 16:55:04 +02:00
Bartosz Taudul
d1edd30ca6 Zone ids are unnecessary. 2017-10-03 16:41:32 +02:00
Bartosz Taudul
2fb4c47491 Remember to calibrate timer. 2017-10-03 15:35:43 +02:00
Bartosz Taudul
7b1135239c Use rdtscp when there's no intrinsic. 2017-10-03 15:28:31 +02:00
Bartosz Taudul
9cde85646a Fix typo. 2017-10-03 15:16:48 +02:00
Bartosz Taudul
e01d378f52 More force inlining. 2017-10-03 15:10:25 +02:00
Bartosz Taudul
fe41185dc0 More unique force inline macro name. 2017-10-03 14:51:58 +02:00
Bartosz Taudul
ba037e5798 Do not store tail index in memory. 2017-10-03 14:50:55 +02:00
Bartosz Taudul
dbb90e51b0 Force inlining of the hot path. 2017-10-03 14:39:02 +02:00
Bartosz Taudul
353fda95a3 Expose profiler internals to make it easier for inlining.
concurrentqueue.h doesn't bring any poisonous includes, only STL.
2017-10-03 14:22:49 +02:00
Bartosz Taudul
439a23049d Separate enqueue allocation functionality. 2017-10-03 14:13:46 +02:00
Bartosz Taudul
16a49356a0 Remove redundant variable. 2017-10-03 14:00:06 +02:00
Bartosz Taudul
7b583628ad Remove unused variables. 2017-10-03 13:58:12 +02:00
Bartosz Taudul
a1abf1f015 Record CPU id. 2017-10-01 19:17:08 +02:00
Bartosz Taudul
f46781808c Construct queue items directly in queue memory. 2017-10-01 17:49:45 +02:00
Bartosz Taudul
99b8c4c77e Prevent fake loop from optimizing out. 2017-10-01 17:42:22 +02:00
Bartosz Taudul
7b0cbef0d7 Allow manual queue item memory filling. 2017-10-01 17:14:26 +02:00
Bartosz Taudul
efda50acb1 Send timer resolution to server. 2017-09-29 18:32:07 +02:00
Bartosz Taudul
6a2cb2c14e Calculate timer resolution. 2017-09-29 18:29:39 +02:00
Bartosz Taudul
445d2831ed Explicit conversion. 2017-09-29 18:29:32 +02:00
Bartosz Taudul
b9aa10913a Rename internal enum to avoid #define conflicts. 2017-09-28 21:20:33 +02:00
Bartosz Taudul
6ae62e6e5a Missing include. 2017-09-28 21:10:02 +02:00
Bartosz Taudul
8c1c395cec Allow sending custom zone names. 2017-09-28 19:28:24 +02:00
Bartosz Taudul
a572ded1cc Add missing define in disabled section. 2017-09-28 19:20:19 +02:00
Bartosz Taudul
d1bbb731fc Zone text (custom string) transfer. 2017-09-27 02:18:17 +02:00
Bartosz Taudul
3c0ce01954 Simplify access to queue producer token.
Note that calibration loop needs separate token, as the thread_local
instance is created after the profiler (and its calibration loop).
2017-09-27 01:03:29 +02:00
Bartosz Taudul
842721a754 Make profiler instance static. 2017-09-27 01:03:01 +02:00
Bartosz Taudul
3cc7cc596e Remove GetNewId() from Profiler interface. 2017-09-27 01:02:04 +02:00
Bartosz Taudul
f584bf76e8 Profiler ID can be static (one less instruction). 2017-09-27 00:30:02 +02:00
Bartosz Taudul
e076d1d475 Send source location answer in stream, not as separate packet. 2017-09-26 19:00:25 +02:00
Bartosz Taudul
e90a86e06e Store zone color in source location struct. 2017-09-26 18:54:48 +02:00
Bartosz Taudul
7424077d70 Store source location in a single object.
Source file, function name and line number are now stored in a const
static container object. This has the following benefits:
- Slightly lighter profiling workload (3 instructions less).
- Profiling queue event size is significantly reduced, by 12 bytes. This
  has an effect on all queue event types.
- Source location grouping has now no cost, as it's performed at the
  compilation stage. This allows simplification of server code.
The downside is that the full source location resolution is now
performed in two steps, as the server has to query both source location
container and strings contained within. This has almost no real impact
on profiler operation.
2017-09-26 02:39:08 +02:00
Bartosz Taudul
e5ad7d9ac4 GetTime() call can be now inlined.
No dependencies on either windows.h, or static instance of Profiler.
2017-09-26 00:42:09 +02:00
Bartosz Taudul
11a790a18f Offload TSC -> time conversion to server. 2017-09-26 00:13:24 +02:00
Bartosz Taudul
519cb8dff3 Allow adding custom colors to zones. 2017-09-25 22:46:14 +02:00