userver: userver/cache/lru_cache_statistics.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
lru_cache_statistics.hpp
1#pragma once
2
3#include <userver/utils/statistics/fwd.hpp>
4#include <userver/utils/statistics/rate.hpp>
5#include <userver/utils/statistics/rate_counter.hpp>
6#include <userver/utils/statistics/recentperiod.hpp>
7
8USERVER_NAMESPACE_BEGIN
9
10namespace cache::impl {
11
12struct ExpirableLruCacheStatisticsAggregator final {
13 utils::statistics::Rate hits;
14 utils::statistics::Rate misses;
15 utils::statistics::Rate stale;
16 utils::statistics::Rate background_updates;
17
18 ExpirableLruCacheStatisticsAggregator& operator+=(const ExpirableLruCacheStatisticsAggregator& other);
19};
20
21struct ExpirableLruCacheStatisticsBase final {
22 utils::statistics::RateCounter hits;
23 utils::statistics::RateCounter misses;
24 utils::statistics::RateCounter stale;
25 utils::statistics::RateCounter background_updates;
26
27 ExpirableLruCacheStatisticsAggregator Load() const;
28
29 void Reset();
30};
31
32struct ExpirableLruCacheStatistics final {
33 ExpirableLruCacheStatisticsBase total;
34 utils::statistics::RecentPeriod<std::atomic<std::uint64_t>, std::uint64_t> recent_hits;
35 utils::statistics::RecentPeriod<std::atomic<std::uint64_t>, std::uint64_t> recent_misses;
36};
37
38void CacheHit(ExpirableLruCacheStatistics& stats);
39
40void CacheMiss(ExpirableLruCacheStatistics& stats);
41
42void CacheStale(ExpirableLruCacheStatistics& stats);
43
44void CacheBackgroundUpdate(ExpirableLruCacheStatistics& stats);
45
46void DumpMetric(utils::statistics::Writer& writer, const ExpirableLruCacheStatisticsBase& stats);
47
48void DumpMetric(utils::statistics::Writer& writer, const ExpirableLruCacheStatistics& stats);
49
50} // namespace cache::impl
51
52USERVER_NAMESPACE_END