@@ -29,6 +29,7 @@ void Stats::init() {
29
29
allocFailures = std::make_unique<PerPoolClassAtomicCounters>();
30
30
chainedItemEvictions = std::make_unique<PerPoolClassAtomicCounters>();
31
31
regularItemEvictions = std::make_unique<PerPoolClassAtomicCounters>();
32
+ usedSize = std::make_unique<PerPoolClassAtomicCounters>();
32
33
auto initToZero = [](auto & a) {
33
34
for (auto & s : a) {
34
35
for (auto & c : s) {
@@ -42,6 +43,7 @@ void Stats::init() {
42
43
initToZero (*fragmentationSize);
43
44
initToZero (*chainedItemEvictions);
44
45
initToZero (*regularItemEvictions);
46
+ initToZero (*usedSize);
45
47
}
46
48
47
49
template <int >
@@ -125,6 +127,14 @@ void Stats::populateGlobalCacheStats(GlobalCacheStats& ret) const {
125
127
ret.numEvictions = accum (*chainedItemEvictions);
126
128
ret.numEvictions += accum (*regularItemEvictions);
127
129
130
+ for (const auto & x : *usedSize) {
131
+ uint64_t sum{0 };
132
+ for (const auto & v : x) {
133
+ sum += v.get ();
134
+ }
135
+ ret.poolUsedSize .emplace_back (sum);
136
+ }
137
+
128
138
ret.invalidAllocs = invalidAllocs.get ();
129
139
ret.numRefcountOverflow = numRefcountOverflow.get ();
130
140
@@ -176,6 +186,7 @@ PoolStats& PoolStats::operator+=(const PoolStats& other) {
176
186
d.numHits += s.numHits ;
177
187
d.chainedItemEvictions += s.chainedItemEvictions ;
178
188
d.regularItemEvictions += s.regularItemEvictions ;
189
+ d.usedSize += s.usedSize ;
179
190
}
180
191
181
192
// aggregate container stats within CacheStat
0 commit comments