open-telemetry / open-telemetry/opentelemetry-cpp

[Performance] Avoid duplication of metric exporters.

Open
#2,710 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug issue:blocked Stale triage/accepted
Dominant language
C++
Stars
1.4k
Forks
632
Avg merge
1d 13h
Merged PRs (30d)
75

Description

When exporting metrics at different frequencies, the only possible setup according to the current spec is to:

  • define multiple periodic metric readers, with different frequencies
  • define a metric exporter dedicated for each reader

When all the exporters points to the same endpoint, this creates overhead:

  • in memory, with multiple exporters send buffers
  • in CPU, with multiple SSL sessions between the application and the endpoint
  • in network, with multiple separate TCP/IP connections to the endpoint

To fix this, it should be possible to setup the SDK so that multiple metric readers can share a common metric exporter.

The spec however mentions that each reader owns one exporter, preventing sharing.

This performance improvement is blocked by the following spec change:

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the OpenTelemetry specification change tracked in issue 3616, then assess how the C++ SDK could support multiple metric readers sharing one exporter. Done means the SDK design no longer requires a separate exporter for each reader while preserving the different export frequencies.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
observability-sre, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.