MCPcopy Create free account
hub / github.com/facebook/CacheLib / optimizeRegularPoolSizes

Method optimizeRegularPoolSizes

cachelib/allocator/PoolOptimizer.cpp:27–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25PoolOptimizer::~PoolOptimizer() { stop(std::chrono::seconds(0)); }
26
27void PoolOptimizer::optimizeRegularPoolSizes() {
28 try {
29 auto strategy = cache_.getPoolOptimizeStrategy();
30 if (!strategy) {
31 strategy = strategy_;
32 }
33 const auto context = strategy->pickVictimAndReceiverRegularPools(cache_);
34 if (context.victimPoolId == Slab::kInvalidPoolId ||
35 context.receiverPoolId == Slab::kInvalidPoolId) {
36 XLOG(DBG, "Cannot find victim and receiver for pool optimization");
37 } else {
38 const auto memoryToMove = Slab::kSize;
39 cache_.resizePools(context.victimPoolId, context.receiverPoolId,
40 memoryToMove);
41 XLOG(DBG, "Moving a slab from Pool {} to Pool {}",
42 static_cast<int>(context.victimPoolId),
43 static_cast<int>(context.receiverPoolId));
44 }
45 } catch (const std::exception& ex) {
46 XLOGF(CRITICAL, "Optimization interrupted due to exception: {}", ex.what());
47 XDCHECK(false);
48 }
49}
50
51void PoolOptimizer::optimizeCompactCacheSizes() {
52 try {

Callers

nothing calls this directly

Calls 4

whatMethod · 0.80
resizePoolsMethod · 0.45

Tested by

no test coverage detected