mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-29 16:54:35 +00:00
5417227e83
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. |
||
---|---|---|
.. | ||
tracy_concurrentqueue.h | ||
tracy_rpmalloc.cpp | ||
tracy_rpmalloc.hpp | ||
tracy_SPSCQueue.h | ||
TracyAlloc.cpp | ||
TracyArmCpuTable.hpp | ||
TracyCallstack.cpp | ||
TracyCallstack.h | ||
TracyCallstack.hpp | ||
TracyCpuid.hpp | ||
TracyDebug.hpp | ||
TracyDxt1.cpp | ||
TracyDxt1.hpp | ||
TracyFastVector.hpp | ||
TracyLock.hpp | ||
TracyOverride.cpp | ||
TracyProfiler.cpp | ||
TracyProfiler.hpp | ||
TracyRingBuffer.hpp | ||
TracyScoped.hpp | ||
TracyStringHelpers.hpp | ||
TracySysPower.cpp | ||
TracySysPower.hpp | ||
TracySysTime.cpp | ||
TracySysTime.hpp | ||
TracySysTrace.cpp | ||
TracySysTrace.hpp | ||
TracyThread.hpp |