1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-29 04:23:51 +00:00
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
2023-07-19 14:01:27 +02:00
2023-01-05 23:36:01 +01:00
2022-12-23 19:40:58 +01:00
2020-07-11 12:26:01 +03:00
2022-04-16 00:13:10 +02:00
2023-04-16 00:22:05 +02:00
2023-04-05 17:19:48 +02:00
2023-08-23 12:24:22 +02:00
2023-01-31 22:55:18 +01:00
2023-04-05 17:16:24 +02:00
2023-04-20 22:48:29 +02:00
2023-05-22 21:09:38 +02:00
2022-02-11 20:22:53 +01:00
2023-01-09 00:22:22 +01:00
2023-07-31 09:47:04 -04:00
2022-06-04 16:26:22 +02:00

Tracy Profiler

Sponsor

A real time, nanosecond resolution, remote telemetry, hybrid frame and sampling profiler for games and other applications.

Tracy supports profiling CPU (Direct support is provided for C, C++, and Lua integration. At the same time, third-party bindings to many other languages exist on the internet, such as Rust, Zig, C#, OCaml, Odin, etc.), GPU (All major graphic APIs: OpenGL, Vulkan, Direct3D 11/12, OpenCL.), memory allocations, locks, context switches, automatically attribute screenshots to captured frames, and much more.

Introduction to Tracy Profiler v0.2
New features in Tracy Profiler v0.3
New features in Tracy Profiler v0.4
New features in Tracy Profiler v0.5
New features in Tracy Profiler v0.6
New features in Tracy Profiler v0.7
New features in Tracy Profiler v0.8

Description
C++ frame profiler
Readme BSD-3-Clause 48 MiB
Languages
C++ 90.8%
C 5.3%
TeX 2%
Python 0.9%
CMake 0.5%
Other 0.4%