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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feed_handler_stats.h"
#include <cassert>
#include <vespa/log/log.h>
LOG_SETUP(".proton.server.feed_handler_stats");
namespace proton {
namespace {
template <typename T>
void update_min_max(T value, std::optional<T>& min, std::optional<T>& max)
{
if (!min.has_value() || value < min.value()) {
min = value;
}
if (!max.has_value() || value > max.value()) {
max = value;
}
}
}
FeedHandlerStats::FeedHandlerStats(uint64_t commits, uint64_t operations, double total_latency) noexcept
: _commits(commits),
_operations(operations),
_total_latency(total_latency),
_min_operations(),
_max_operations(),
_min_latency(),
_max_latency()
{
}
FeedHandlerStats::FeedHandlerStats() noexcept
: FeedHandlerStats(0, 0, 0.0)
{
}
FeedHandlerStats::~FeedHandlerStats() = default;
FeedHandlerStats&
FeedHandlerStats::operator-=(const FeedHandlerStats& rhs) noexcept
{
_commits -= rhs._commits;
_operations -= rhs._operations;
_total_latency -= rhs._total_latency;
return *this;
}
void
FeedHandlerStats::add_commit(uint32_t operations, double latency) noexcept
{
++_commits;
_operations += operations;
_total_latency += latency;
update_min_max(operations, _min_operations, _max_operations);
update_min_max(latency, _min_latency, _max_latency);
}
void
FeedHandlerStats::reset_min_max() noexcept
{
_min_operations.reset();
_max_operations.reset();
_min_latency.reset();
_max_latency.reset();
}
void
FeedOperationCounter::commitCompleted(size_t numOperations) {
assert(_commitsStarted > _commitsCompleted);
assert(_operationsStarted >= _operationsCompleted + numOperations);
_operationsCompleted += numOperations;
_commitsCompleted++;
LOG(spam, "%zu: onCommitDone(%zu) total=%zu left=%zu",
_commitsCompleted, numOperations, _operationsCompleted, operationsInFlight());
}
}
|