A realtime CPU/GPU profiler hosted in a single C file with a remote web viewer for performance analysis.
Remotery is a real-time CPU and GPU profiler designed for performance analysis in applications like games and high-performance software. It provides lightweight instrumentation across multiple threads and graphics APIs, with a remote web-based viewer for live and historical performance inspection. The profiler is implemented as a single C file for easy integration and supports a wide range of platforms and GPU APIs.
Game developers, graphics programmers, and engineers working on performance-critical applications across Windows, Linux, macOS, iOS, Android, and consoles. It's particularly useful for those needing real-time profiling of both CPU and GPU activity.
Developers choose Remotery for its simplicity (single C file), cross-platform support, and powerful real-time web viewer. It offers unique features like GPU UI rendering for high-performance updates, automatic thread sampling, and support for multiple graphics APIs without requiring complex setup or administrative privileges.
Single C file, Realtime CPU/GPU Profiler with Remote Web Viewer
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Remotery is hosted in a single C file (lib/Remotery.c), making it trivial to add to any C/C++ project by just including the file and header, as emphasized in the Compiling section.
It supports a wide range of platforms including Windows, Linux, macOS, iOS, Android, and consoles, plus GPU APIs like D3D, OpenGL, Vulkan, Metal, and CUDA, enabling consistent profiling across diverse environments.
The viewer uses GPU rendering for the UI, bypassing the DOM to achieve 60hz updates, which allows real-time monitoring without lag, as stated in the Features list.
Identifies processor core usage for threads without requiring Administrator privileges, simplifying multi-threaded analysis on systems like Windows and Linux.
Binding to GPU APIs like Vulkan requires specific extensions (e.g., hostQueryReset, timelineSemaphore) and careful function pointer passing, adding setup overhead and potential for errors.
For Metal, profiling is restricted to command buffer timing only, with no finer-grained samples, which may not provide detailed insights for GPU-intensive tasks.
On some platforms like MINGW-64, manual linking of libraries (libws2_32.a and libwinmm.a) is required, and macro definitions (e.g., RMT_USE_*) must be set correctly, increasing integration complexity.