Skip to content

Unify metrics DataPoints collectionΒ #2145

@fraillt

Description

@fraillt

Problem

At the moment there's zero code reuse in DataPoints collection phase. Due to too much copy/paste there are few issues:

  • there are inefficiencies by doing unnecessary .clone()
  • I noticed at least one bug in PrecomputedSum::delta where no_attribute_tracker uses get_value instead of get_and_reset_value.
  • hard to understand the core logic of aggregator, versus implementation details of how DataPoints are collected.
  • makes very hard to experiment with performance improvements in measuring and/or collecting phase. E.g. if I change something within ValueMap, I need to go and update at minimum 5 aggregators (if we add ExpoHistogram) * 2 (delta/comulative) = 10 places.
  • makes very hard to review, because simple change will affect at least 10 places.

Solution

Hide implementation details of ValueMap, and provide simple collect_cumulative and collect_delta functions instead (similar idea as in #2114).
In the future we'll be able to experiment and improve ValueMap implementation and get benefits across all aggregators.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions