@@ -29,6 +29,7 @@ void Stats::init() {
2929 allocFailures = std::make_unique<PerPoolClassAtomicCounters>();
3030 chainedItemEvictions = std::make_unique<PerPoolClassAtomicCounters>();
3131 regularItemEvictions = std::make_unique<PerPoolClassAtomicCounters>();
32+ usedSize = std::make_unique<PerPoolClassAtomicCounters>();
3233 auto initToZero = [](auto & a) {
3334 for (auto & s : a) {
3435 for (auto & c : s) {
@@ -42,6 +43,7 @@ void Stats::init() {
4243 initToZero (*fragmentationSize);
4344 initToZero (*chainedItemEvictions);
4445 initToZero (*regularItemEvictions);
46+ initToZero (*usedSize);
4547}
4648
4749template <int >
@@ -125,6 +127,14 @@ void Stats::populateGlobalCacheStats(GlobalCacheStats& ret) const {
125127 ret.numEvictions = accum (*chainedItemEvictions);
126128 ret.numEvictions += accum (*regularItemEvictions);
127129
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+
128138 ret.invalidAllocs = invalidAllocs.get ();
129139 ret.numRefcountOverflow = numRefcountOverflow.get ();
130140
@@ -176,6 +186,7 @@ PoolStats& PoolStats::operator+=(const PoolStats& other) {
176186 d.numHits += s.numHits ;
177187 d.chainedItemEvictions += s.chainedItemEvictions ;
178188 d.regularItemEvictions += s.regularItemEvictions ;
189+ d.usedSize += s.usedSize ;
179190 }
180191
181192 // aggregate container stats within CacheStat
0 commit comments