tracy/public/client
Keno Fischer 5417227e83 Use patchable rdtsc sequence to avoid slowdowns under rr
We (Julia) ship both support for using tracy to trace julia applications,
as well as using `rr` (https://github.com/rr-debugger/rr) for record-replay debugging.
After our most recent rebuild of tracy, users have been reporting signfificant performance
slowdowns when `rr` recording a session that happens to also load the tracy library
(even if tracing is not enabled). Upon further examination, the recompile happened
to trigger a protective heuristic that disabled rr's patching of tracy's use of
`rdtsc` because an earlier part of the same function happened to look like a
conditional branch into the patch region. See https://github.com/rr-debugger/rr/pull/3580
for details. To avoid this issue occurring again in future rebuilds of tracy,
adjust tracy's `rdtsc` sequence to be `nopl; rdtsc`, which (as of of the
linked PR) is a sequence that is guaranteed to bypass this heuristic
and not incur the additional overhead when run under rr.

This functionality is kept behind a compile-time flag `TRACY_PATCHABLE_NOPSLEDS`
in order to avoid polluting the instruction cache unnecessarily.
2023-09-20 20:21:40 -04:00
..
tracy_concurrentqueue.h Fix MSVC compiler warning 2023-02-08 13:27:17 +00:00
tracy_rpmalloc.cpp Fix mac compile for latest macos SDK 2023-08-15 21:00:46 -03:00
tracy_rpmalloc.hpp Update rpmalloc to 1.4.4. 2022-07-30 13:29:57 +02:00
tracy_SPSCQueue.h Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracyAlloc.cpp Decouple rpmalloc usage from TRACY_ENABLE flag. 2022-08-08 19:40:16 +02:00
TracyArmCpuTable.hpp Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracyCallstack.cpp Fix and test TRACY_DEMANGLE for TracyClient 2023-09-06 01:28:58 +02:00
TracyCallstack.h Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracyCallstack.hpp Always provide Callstack() implementation, even if dummy. 2022-11-09 21:55:41 +01:00
TracyCpuid.hpp Fix cpuid symbol redefinition on older GCC versions 2022-08-31 17:59:46 +02:00
TracyDebug.hpp Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracyDxt1.cpp Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracyDxt1.hpp Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracyFastVector.hpp Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracyLock.hpp Wrap std::numeric_limits<T>::max() in parenthesis 2023-08-17 10:03:52 +02:00
TracyOverride.cpp Override dlclose() to do nothing. 2022-10-28 01:21:52 +02:00
TracyProfiler.cpp Fix compilation for the case of using TRACY_NO_CALLSTACK 2023-07-31 11:40:12 +07:00
TracyProfiler.hpp Use patchable rdtsc sequence to avoid slowdowns under rr 2023-09-20 20:21:40 -04:00
TracyRingBuffer.hpp Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracyScoped.hpp Wrap std::numeric_limits<T>::max() in parenthesis 2023-08-17 10:03:52 +02:00
TracyStringHelpers.hpp Do not duplicate code. 2022-07-20 01:06:12 +02:00
TracySysPower.cpp Read and report power usage. 2023-03-10 00:23:09 +01:00
TracySysPower.hpp Read and report power usage. 2023-03-10 00:23:09 +01:00
TracySysTime.cpp Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracySysTime.hpp Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracySysTrace.cpp linux: respect TRACY_NO_SAMPLING for sys-tracing 2023-04-04 17:22:31 -04:00
TracySysTrace.hpp Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
TracyThread.hpp Fix call to rpmalloc_thread_finalize in manual lifetime use-case. 2022-07-30 14:33:39 +02:00