Frame profiler
Go to file
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
.github Fix and test TRACY_DEMANGLE for TracyClient 2023-09-06 01:28:58 +02:00
.vscode Add test application build and run configuration. 2022-04-30 19:02:47 +02:00
capture Properly call make from within makefiles. 2023-05-23 22:42:53 +02:00
common Allow manual disabling of libtbb linkage. 2022-09-29 01:41:35 +02:00
csvexport Export thread id data 2023-07-19 14:01:27 +02:00
doc Update screenshots. 2023-01-05 23:36:01 +01:00
dtl Add Diff Template Library 1.20. 2022-12-23 19:40:58 +01:00
examples Move all client headers and sources to public/ directory. 2022-07-17 15:47:38 +02:00
extra Add images for more proper zigzag mip chain. 2023-04-29 12:47:29 +02:00
getopt Move getopt to root 2020-07-11 12:26:01 +03:00
icon Minimize SVG files. 2022-04-16 00:13:10 +02:00
imgui Update ImGui to 1.89.5 + docking. 2023-04-16 00:22:05 +02:00
import-chrome Properly call make from within makefiles. 2023-05-23 22:42:53 +02:00
library Properly call make from within makefiles. 2023-05-23 22:42:53 +02:00
manual Support use of dynamic vulkan symbols (#570) 2023-06-09 12:48:30 +02:00
nfd Update nfd-extended to 1.0.2. 2023-04-05 17:19:48 +02:00
profiler Fix macOS DPI scaling 2023-08-23 12:24:22 +02:00
public Use patchable rdtsc sequence to avoid slowdowns under rr 2023-09-20 20:21:40 -04:00
server Reduce number of worker threads used for render tasks. 2023-08-05 12:01:36 +02:00
test Bump stb_image.h to 2.28. 2023-01-31 22:55:18 +01:00
update Properly call make from within makefiles. 2023-05-23 22:42:53 +02:00
vcpkg Fail with error code if install_vcpkg_dependencies.bat commands fail 2022-06-25 17:52:42 +02:00
zstd Update zstd to 1.5.5. 2023-04-05 17:16:24 +02:00
.clang-tidy Add clang-tidy config. 2023-04-20 22:48:29 +02:00
.gitignore Ignore obj files. 2023-05-22 21:09:38 +02:00
AUTHORS Update AUTHORS. 2022-02-11 20:22:53 +01:00
CMakeLists.txt Use patchable rdtsc sequence to avoid slowdowns under rr 2023-09-20 20:21:40 -04:00
Config.cmake.in fix missing dependendency on install 2023-05-18 09:39:10 +01:00
LICENSE Update copyright year. 2023-01-09 00:22:22 +01:00
meson_options.txt Fix Meson options to match build 2022-06-28 12:00:09 -05:00
meson.build Use patchable rdtsc sequence to avoid slowdowns under rr 2023-09-20 20:21:40 -04:00
NEWS Adjust language to no longer specify "all cores". 2023-08-05 12:08:29 +02:00
README.md Added binding links to the README.md 2023-07-31 09:47:04 -04:00
vcpkg.json Remove vcpkg builtin-baseline 2022-06-04 16:26:22 +02:00
version.cmake Added cmake versioning and removed hardcoded share dir path 2023-07-17 10:55:46 -06: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