userver: userver/cache/lru_cache_statistics.hpp Source File
Loading...
Searching...
No Matches
lru_cache_statistics.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/cache/lru_cache_statistics.hpp
4/// @brief Expirable LRU cache statistics types and metric helpers
5
6#include <userver/utils/statistics/fwd.hpp>
7#include <userver/utils/statistics/rate.hpp>
8#include <userver/utils/statistics/rate_counter.hpp>
9#include <userver/utils/statistics/recentperiod.hpp>
10
11USERVER_NAMESPACE_BEGIN
12
13namespace cache::impl {
14
15struct ExpirableLruCacheStatisticsAggregator final {
16 utils::statistics::Rate hits;
17 utils::statistics::Rate misses;
18 utils::statistics::Rate stale;
19 utils::statistics::Rate background_updates;
20
21 ExpirableLruCacheStatisticsAggregator& operator+=(const ExpirableLruCacheStatisticsAggregator& other);
22};
23
24struct ExpirableLruCacheStatisticsBase final {
25 utils::statistics::RateCounter hits;
26 utils::statistics::RateCounter misses;
27 utils::statistics::RateCounter stale;
28 utils::statistics::RateCounter background_updates;
29
30 ExpirableLruCacheStatisticsAggregator Load() const;
31
32 void Reset();
33};
34
35struct ExpirableLruCacheStatistics final {
36 ExpirableLruCacheStatisticsBase total;
37 utils::statistics::RecentPeriod<std::atomic<std::uint64_t>, std::uint64_t> recent_hits;
38 utils::statistics::RecentPeriod<std::atomic<std::uint64_t>, std::uint64_t> recent_misses;
39};
40
41void CacheHit(ExpirableLruCacheStatistics& stats);
42
43void CacheMiss(ExpirableLruCacheStatistics& stats);
44
45void CacheStale(ExpirableLruCacheStatistics& stats);
46
47void CacheBackgroundUpdate(ExpirableLruCacheStatistics& stats);
48
49void DumpMetric(utils::statistics::Writer& writer, const ExpirableLruCacheStatisticsBase& stats);
50
51void DumpMetric(utils::statistics::Writer& writer, const ExpirableLruCacheStatistics& stats);
52
53} // namespace cache::impl
54
55USERVER_NAMESPACE_END