Platform Architecture
The zymtrace platform is only available for on-premises/self-hosted installation, allowing you to host and manage zymtrace entirely within your infrastructure for full control over your data and setup. The platform consists of two main components:
- zymtrace profiler: This is the eBPF-based agent that needs to be installed on the machines running your applications. It collects performance profiles from both GPU & CPU-bound workloads.
- Backend services: The backend services store, process, and analyze performance profiles. All our core backend services are written in Rust π¦. The front-end is a combination of ReactJS and WASM.
The diagram below depicts a high-level architecture of the components:


Need a hosted zymtrace backend?
We can provision a dedicated cloud deployment for you. Email us at [email protected] or request access here
Components overviewβ
zymtrace profilerβ
The zymtrace profiler runs on each node, deployed either as a Kubernetes DaemonSet or as a standalone binary on a standard VM. It collects performance profiles of resource-intensive processes on the node, aggregates and compresses them, and sends them to the backend via gRPC. TLS is supported by default, with an option to disable it if needed. Here's a more detailed description of how it works:


- Unwinder eBPF programs are loaded into the kernel.
- The kernel verifies the safety of the BPF program. If approved, the program is attached to probes and triggered upon specific events.
- The eBPF programs collect data and pass it to userspace via maps.
- The agent retrieves the collected data from maps. This data includes process-specific and interpreter-specific meta-information, which helps the eBPF unwinder programs perform mixed-stack unwinding across different languages (e.g., Python calling into C libraries).
- The agent pushes stack traces, metrics, and metadata to the zymtrace gateway service for routing to the appropriate backend services for analysis.
- Easily identify & optimize the most inefficient functions across your entire infrastructure.
zymtrace GPU profilerβ
GPU utilization, temperature, powerβthose metrics are easy to collect, but they don't explain the inner workings of the GPU or why it is idling. That's why we didn't start with NVML or DCGM metrics. We started deeper, closer to the hardware. That's where real insight lives, not just in metrics.
zymtrace profiles down to CUDA kernels
, disassembles CUDA SASS
mnemonics, exposes GPU stall reasons, and correlates it all back to the CPU traces
that launched the kernels, without requiring recompilation.
Learn more: GPU Profiler deep dive β
zymtrace backend servicesβ
The zymtrace backend is designed to store, process and visualize profiling data efficiently. Below is an overview of the key backend services and their roles:
gateway serviceβ
The gateway
service acts as the main entry point for all user requests, using Envoy Proxy for request routing and load balancing. It routes requests to the appropriate backend services (UI, ingest, symDB) and handles mTLS when configured.
UI serviceβ
The UI
service serves the web-based user interface for zymtrace, built with ReactJS and WASM. Users access the UI through the gateway service, which routes web requests to this service.
ingest serviceβ
The ingest
service receives profiling data from the zymtrace profiler via the gateway service. The gateway routes profiling data requests to the ingest service based on the request path.
The service is also responsible for storing profiling events in ClickHouse, a high-performance database designed for ultra-fast querying and analysis.
symDB serviceβ
The symDB
service handles symbol resolution upon request. It retrieves native symbols stored in S3/Minio or fetches them from the global symbolization
service. This service is critical for converting raw profiling data into meaningful stack traces by resolving both native and interpreted symbols.
Learn more: Symbolization deep dive β
identity serviceβ
zymtrace provides the granularity to segregate your profiling data into different projects within an organization. The identity service currently manages these projects. It associates incoming profiling data from the ingest
service with the correct project, laying the foundation for future user authentication and role-based access control.
Storageβ
- ClickHouse: Stores all profiling events and interpreted symbols.
- Postgres: Stores user data, meta-data and project information.
- S3/Minio: Stores native symbols.
Get startedβ
zymtrace backend (On-Premises)β
Refer to our on-premises installation guide for detailed instructions.
zymtrace profilerβ
Refer to the profiler host agent installation guide for more details.