in cachelib/allocator/CacheAllocatorConfig.h [1019:1107]
std::map<std::string, std::string> CacheAllocatorConfig<T>::serialize() const {
std::map<std::string, std::string> configMap;
configMap["size"] = std::to_string(size);
configMap["cacheDir"] = cacheDir;
configMap["posixShm"] = usePosixShm ? "set" : "empty";
configMap["defaultAllocSizes"] = "";
// Stringify std::set
for (auto& elem : defaultAllocSizes) {
if (configMap["defaultAllocSizes"] != "") {
configMap["defaultAllocSizes"] += ", ";
}
configMap["defaultAllocSizes"] += std::to_string(elem);
}
configMap["disableFullCoredump"] = std::to_string(disableFullCoredump);
configMap["dropNvmCacheOnShmNew"] = std::to_string(dropNvmCacheOnShmNew);
configMap["trackRecentItemsForDump"] =
std::to_string(trackRecentItemsForDump);
configMap["poolResizeInterval"] = util::toString(poolResizeInterval);
configMap["poolResizeSlabsPerIter"] = std::to_string(poolResizeSlabsPerIter);
configMap["poolRebalanceInterval"] = util::toString(poolRebalanceInterval);
configMap["trackTailHits"] = std::to_string(trackTailHits);
// Stringify enum
switch (memMonitorConfig.mode) {
case MemoryMonitor::FreeMemory:
configMap["memMonitorMode"] = "Free Memory";
break;
case MemoryMonitor::ResidentMemory:
configMap["memMonitorMode"] = "Resident Memory";
break;
case MemoryMonitor::Disabled:
configMap["memMonitorMode"] = "Disabled";
break;
default:
configMap["memMonitorMode"] = "Unknown";
}
configMap["memMonitorInterval"] = util::toString(memMonitorInterval);
configMap["memAdvisePercentPerIter"] =
std::to_string(memMonitorConfig.maxAdvisePercentPerIter);
configMap["memReclaimPercentPerIter"] =
std::to_string(memMonitorConfig.maxReclaimPercentPerIter);
configMap["memMaxAdvisePercent"] =
std::to_string(memMonitorConfig.maxAdvisePercent);
configMap["memLowerLimitGB"] = std::to_string(memMonitorConfig.lowerLimitGB);
configMap["memUpperLimitGB"] = std::to_string(memMonitorConfig.upperLimitGB);
configMap["reclaimRateLimitWindowSecs"] =
std::to_string(memMonitorConfig.reclaimRateLimitWindowSecs.count());
configMap["reaperInterval"] = util::toString(reaperInterval);
configMap["mmReconfigureInterval"] = util::toString(mmReconfigureInterval);
configMap["disableEviction"] = std::to_string(disableEviction);
configMap["evictionSearchTries"] = std::to_string(evictionSearchTries);
configMap["thresholdForConvertingToIOBuf"] =
std::to_string(thresholdForConvertingToIOBuf);
configMap["movingTries"] = std::to_string(movingTries);
configMap["chainedItemsLockPower"] = std::to_string(chainedItemsLockPower);
configMap["removeCb"] = removeCb ? "set" : "empty";
configMap["nvmAP"] = nvmCacheAP ? "custom" : "empty";
configMap["nvmAPRejectFirst"] = rejectFirstAPNumEntries ? "set" : "empty";
configMap["moveCb"] = moveCb ? "set" : "empty";
configMap["enableZeroedSlabAllocs"] = std::to_string(enableZeroedSlabAllocs);
configMap["lockMemory"] = std::to_string(lockMemory);
configMap["allocationClassSizeFactor"] =
std::to_string(allocationClassSizeFactor);
configMap["maxAllocationClassSize"] = std::to_string(maxAllocationClassSize);
configMap["minAllocationClassSize"] = std::to_string(minAllocationClassSize);
configMap["reduceFragmentationInAllocationClass"] =
std::to_string(reduceFragmentationInAllocationClass);
configMap["slabMemoryBaseAddr"] = stringifyAddr(slabMemoryBaseAddr);
configMap["poolResizeStrategy"] =
stringifyRebalanceStrategy(poolResizeStrategy);
configMap["poolAdviseStrategy"] =
stringifyRebalanceStrategy(poolAdviseStrategy);
configMap["defaultPoolRebalanceStrategy"] =
stringifyRebalanceStrategy(defaultPoolRebalanceStrategy);
configMap["eventTracker"] = eventTracker ? "set" : "empty";
configMap["nvmAdmissionMinTTL"] = std::to_string(nvmAdmissionMinTTL);
mergeWithPrefix(configMap, throttleConfig.serialize(), "throttleConfig");
mergeWithPrefix(configMap,
chainedItemAccessConfig.serialize(),
"chainedItemAccessConfig");
mergeWithPrefix(configMap, accessConfig.serialize(), "accessConfig");
mergeWithPrefix(configMap, reaperConfig.serialize(), "reaperConfig");
if (nvmConfig)
mergeWithPrefix(configMap, nvmConfig->serialize(), "nvmConfig");
return configMap;
}