@@ -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