| 565 | } |
| 566 | |
| 567 | MPStats MemoryPool::getStats() const { |
| 568 | LockHolder l(lock_); |
| 569 | folly::F14FastMap<ClassId, ACStats> acStats; |
| 570 | acStats.reserve(ac_.size()); |
| 571 | std::set<ClassId> classIds; |
| 572 | for (const auto& ac : ac_) { |
| 573 | acStats.insert({ac->getId(), ac->getStats()}); |
| 574 | classIds.insert(ac->getId()); |
| 575 | } |
| 576 | |
| 577 | const auto availableMemory = getUnAllocatedSlabMemory(); |
| 578 | const auto slabsUnAllocated = |
| 579 | availableMemory > 0 ? availableMemory / Slab::kSize - freeSlabs_.size() |
| 580 | : 0; |
| 581 | return MPStats{std::move(classIds), std::move(acStats), freeSlabs_.size(), |
| 582 | slabsUnAllocated, nSlabResize_, nSlabRebalance_, |
| 583 | curSlabsAdvised_}; |
| 584 | } |