aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.h
blob: d9404e0ca12aa0ddcf7db28b9d29a7cf2b7d8fe6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once

#include <vespa/metrics/valuemetric.h>
#include <vespa/metrics/countmetric.h>

namespace metrics { class MetricSet; }
namespace storage {

// Provides a convenient wrapper for all MergeHandler-related metrics.
// This is _not_ its own MetricSet; metrics are owned by an explicitly provided
// parent. This is to prevent metric paths from changing, as external aggregation
// depends on the existing paths.
struct MergeHandlerMetrics {
    metrics::LongCountMetric bytesMerged;
    // Aggregate metrics:
    metrics::DoubleAverageMetric mergeLatencyTotal;
    metrics::DoubleAverageMetric mergeMetadataReadLatency;
    metrics::DoubleAverageMetric mergeDataReadLatency;
    metrics::DoubleAverageMetric mergeDataWriteLatency;
    metrics::DoubleAverageMetric mergeAverageDataReceivedNeeded;
    // Individual operation metrics. These capture both count and latency sum, so
    // no need for explicit count metric on the side.
    metrics::DoubleAverageMetric put_latency;
    metrics::DoubleAverageMetric remove_latency;
    // Iteration over metadata and document payload data is already covered by
    // the merge[Meta]Data(Read|Write)Latency metrics, so not repeated here. Can be
    // explicitly added if deemed required.

    explicit MergeHandlerMetrics(metrics::MetricSet* owner);
    ~MergeHandlerMetrics();
};

}