Overview

Benchmarks play a crucial role in the development and optimization of Odigos. We implement continuous monitoring of both Odigos’ resource consumption and its impact on target applications. This document provides the latest benchmark results and explains our monitoring process.

Memory Usage

When measuring memory usage, we focus on two components: the Odiglet and the target application. The Odiglet is a small agent that runs on the target application’s node and collects data. The target application is the application that we are monitoring.

Target Application

Additional memory allocation is needed on the target application in order to support automatic context propagation. The amount of memory needed depends on the number of concurrent requests we would like to support. By default, Odigos allocates 5Mb of memory which is enough to support 15,000 concurrent requests. This number can be configured by the user to fit the target application’s needs.

Odiglet

Odiglet main responsibility is to load instrumentations into the target application and collect data. As a result, the Odiglet’s memory usage is almost identical to the memory consumption of the OpenTelemetry collector. For a full benchmark of the OpenTelemetry collector, please refer to the OpenTelemetry website.

Other Odigos Components

Other Odigos components, such as the instrumentor, autoscaler, and scheduler, are lightweight and consume minimal resources. As part of the Odigos installation, these components are deployed as Kubernetes deployments with resource limits and requests. The default resource limits are set to 500m CPU and 128Mi memory.