Bartosz Taudul
459890ef0e
Don't hold lock on serial queue during dequeue.
2018-04-14 15:46:11 +02:00
Bartosz Taudul
e1dc62cabe
Add fast vector swap.
2018-04-14 15:46:01 +02:00
Bartosz Taudul
7c4075c9ce
Fix MemRead() call.
2018-04-03 17:57:12 +02:00
Bartosz Taudul
3ea5600900
Fix UB, lose type safety.
2018-04-03 17:51:53 +02:00
Bartosz Taudul
9c403d9cc2
GetTime() calls also must be serialized.
2018-04-01 21:07:33 +02:00
Bartosz Taudul
794f199bdc
Serial queue dequeuing.
2018-04-01 20:04:35 +02:00
Bartosz Taudul
860e0e1809
Store memory operations in the serial queue.
2018-04-01 19:53:24 +02:00
Bartosz Taudul
faeecdd773
Add serial queue to profiler.
2018-04-01 19:53:05 +02:00
Bartosz Taudul
0a3e9f85eb
"Fast" vector implementation.
2018-04-01 19:52:29 +02:00
Bartosz Taudul
991fc6bd95
Memory allocations tracker.
2018-03-31 21:56:05 +02:00
Bartosz Taudul
7a35e8facc
Fix typo.
2018-03-31 14:19:45 +02:00
Bartosz Taudul
a677048d2b
Fix try_lock().
2018-03-31 14:15:04 +02:00
Bartosz Taudul
3b03e849f0
Harden client code against unaligned memory access.
...
There shouldn't be any changes in generated code on modern
architectures, as the memcpy will be reduced to a store/load operation
identical to the one generated with plain struct member access.
GetTime( cpu ) needs special handling, as the MSVC intrinsic for rdtscp
can't store cpu identifier in a register. Using intermediate variable
would cause store to stack, read from stack, store to the destination
address. Since rdtscp is only available on x86, which handles unaligned
stores without any problems, we can have one place with direct struct
member access.
2018-03-31 14:15:04 +02:00
Bartosz Taudul
dca7338319
Update rpmalloc to 1.3.0.
2018-03-04 15:51:10 +01:00
Bartosz Taudul
0c1721144e
Backport concurrent queue's fixes.
...
420509b6678263f0fa6c0ffba87a15319238a1f2
2018-03-04 15:32:42 +01:00
Bartosz Taudul
7300c2e46e
Fix TRACY_NO_EXIT behavior.
...
Terminate event could be the first event that was sent. In such case
server immediately closed the connection, as there was no outstanding
data to receive. Fix by sending all data in the queue before sending
terminate event.
2018-01-11 13:45:13 +01:00
Bartosz Taudul
c3a32f9c35
Send lock type in LockWait/LockSharedWait events.
...
This will be needed for proper construction of LockMap on the server, in
case the LockAnnounce message hasn't arrived yet.
2017-12-17 18:30:34 +01:00
Bartosz Taudul
bcf2bf1c5c
Shared lock events (still using old functionality).
2017-12-10 22:04:49 +01:00
Bartosz Taudul
a9e14c8990
Add standard lock events to shared locking.
2017-12-10 21:56:19 +01:00
Bartosz Taudul
782231b048
Shared lockable skeleton.
2017-12-10 21:49:45 +01:00
Bartosz Taudul
3567d7edd8
Reintroduce lock announce events.
2017-12-10 21:40:48 +01:00
Bartosz Taudul
f67465e784
Reduce timer calibration delay to 200 ms.
2017-11-25 13:34:26 +01:00
Bartosz Taudul
48da593ab2
Increase calibration time to half a second.
2017-11-24 01:43:35 +01:00
Bartosz Taudul
c431747f06
Favor transfer of zones without predicted payload.
2017-11-22 02:28:12 +01:00
Bartosz Taudul
630db7112a
Leaner iteration in Profiler::Dequeue().
2017-11-22 02:07:23 +01:00
Bartosz Taudul
a309e71fe1
Move force inline defines to a separate header.
2017-11-19 16:32:38 +01:00
Bartosz Taudul
5da8a7aa9b
Optimize deque.
2017-11-15 20:20:02 +01:00
Bartosz Taudul
2f669aea41
Workaround gcc issues.
2017-11-15 10:56:27 +01:00
Bartosz Taudul
c43eb29ce0
Don't send source location pointer in query reply.
...
Since reply order is the same as the query order, the server already
knows what source location it receives. This observation allows placing
zone name into the source location struct.
2017-11-14 23:06:45 +01:00
Bartosz Taudul
5c872b2137
Simplify GPU context handling.
2017-11-14 00:48:26 +01:00
Bartosz Taudul
3c00ce0958
GPU context registration.
2017-11-11 19:44:09 +01:00
Bartosz Taudul
81735aea2f
Support for setting zone names in lua.
2017-11-11 17:56:41 +01:00
Bartosz Taudul
59ec40c045
Preemptive transfer of source location payload.
2017-11-11 15:59:30 +01:00
Bartosz Taudul
7f3b8f4647
Preemptive message text delivery.
2017-11-11 15:41:21 +01:00
Bartosz Taudul
76e11174dc
Preemptive sending of custom strings.
2017-11-11 15:22:55 +01:00
Bartosz Taudul
c2797a4cc7
Data packets can't cross data buffer boundary.
2017-11-11 15:08:03 +01:00
Bartosz Taudul
49bce256bc
Fix type mismatch.
2017-11-11 14:35:46 +01:00
Bartosz Taudul
0d15d45c3a
Don't send source location through the queue.
2017-11-11 14:24:22 +01:00
Bartosz Taudul
065964b216
Send data before sleeping during shutdown.
2017-11-11 14:23:55 +01:00
Bartosz Taudul
fc4e31bb8f
Wait for send buffer to be full before sending data.
2017-11-11 14:16:37 +01:00
Bartosz Taudul
fb46b3cf24
Restore process name retrieval on cygwin.
2017-11-10 19:46:31 +01:00
Bartosz Taudul
f6af913fd3
Remove ability to disable LZ4 compression.
2017-11-10 17:34:11 +01:00
Bartosz Taudul
bc77aa8d26
Source location payload transfer. No storage yet.
2017-11-05 16:46:00 +01:00
Bartosz Taudul
3659afac2a
Move another big buffer out of stack.
2017-11-02 17:37:10 +01:00
Bartosz Taudul
cea7cdd716
Don't create big buffers on stack.
2017-11-02 12:58:38 +01:00
Bartosz Taudul
230822e18c
Enforce proper calling convention on x86.
2017-10-30 21:46:50 +01:00
Bartosz Taudul
cf3d8eb810
Manual collection of thread names on android.
2017-10-30 20:45:00 +01:00
Bartosz Taudul
f861f89134
Disable rdtscp on android.
2017-10-30 16:23:23 +01:00
Bartosz Taudul
8f280b147b
Getting program name on android.
2017-10-30 14:59:05 +01:00
Bartosz Taudul
97880a89ae
Clobber ecx register.
2017-10-29 16:20:07 +01:00
Bartosz Taudul
a220043114
Add no-cpu GetTime() variant.
...
In this version the address of cpu output variable is const, so there's
no stack address calculation involved.
2017-10-29 16:12:16 +01:00
Bartosz Taudul
68f5a17bca
Use 32-bit registers for rdtscp output.
2017-10-29 13:15:43 +01:00
Bartosz Taudul
03289175ab
Lock counter also must be initialized early.
2017-10-24 22:02:49 +02:00
Bartosz Taudul
ad338a7cfd
Fix message literals.
2017-10-21 12:39:26 +02:00
Bartosz Taudul
f1da7c1c85
Force TLS block creation on cygwin before malloc.
2017-10-20 18:28:25 +02:00
Bartosz Taudul
1e645665fe
Initialize rpmalloc in profiler worker thread.
...
Thread local variables on gcc are apparently not initialized on thread
startup, but on first access to thread local variables block. Previously
it was working, because s_token was accessed before any rpmalloc
allocation could be performed. Now the first rpmalloc allocation is the
Socket class, and rpmalloc is not initialized there, as there was no
thread local access yet.
2017-10-18 23:30:54 +02:00
Bartosz Taudul
9c4316879c
Add TRACY_NO_EXIT macro.
2017-10-18 20:01:12 +02:00
Bartosz Taudul
51013dc0e6
Manual allocation of socket memory.
2017-10-18 19:50:28 +02:00
Bartosz Taudul
fc94378e0c
Move TracyAlloc.hpp to common. Use rpmalloc only if TRACY_ENABLE.
2017-10-18 19:50:28 +02:00
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