Skip to content

DPL: add metric aggregation based on policies#15495

Open
robertpaulp wants to merge 1 commit into
AliceO2Group:devfrom
robertpaulp:dev
Open

DPL: add metric aggregation based on policies#15495
robertpaulp wants to merge 1 commit into
AliceO2Group:devfrom
robertpaulp:dev

Conversation

@robertpaulp

Copy link
Copy Markdown

This pull request adds a metric aggregation tool. The tool offers a configurable initialization, where for specific devices or metrics a type of policy can be chosen. The following pipeline is done:

  • The aggregation policy is configured. The current methods include "sum", "average", "rate", and "simple" (where "simple" refers to no aggregation done)
  • The values are extracted from the Driver's DPL Ring Buffer at a specified sampling interval of O2_METRICAGGREGATOR_INTERVAL.
  • The policy is applied and sent to the monitoring backend of choice (in the current implementation only ApMon is available, but it can later be modified).

CPU = 0; \
}
#endif
#define O2_METRICAGGREGATOR_INTERVAL 30

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make this a runtime option, please, or reuse the dumpInterval. Also, does it make sense that every metric aggregates with the same interval?

@@ -0,0 +1,397 @@
// Copyright 2019-2025 CERN and copyright holders of ALICE O2.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before you write a separate class, I would like to be convinced this cannot be an additional operation on the DataProcessingStats.

driverInfo.resourcesMonitoringDumpInterval * 1000);
}

if (std::getenv("ALIEN_JDL_AGGREGATOR_POLICY") != nullptr) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you really need a separate timer?


const char* MetricAggregator::getBackendFromEnv()
{
const char* envBackend = std::getenv("APMON_CONFIG");

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why does it need to know about APMON at all?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants