in cachelib/cachebench/workload/PieceWiseCache.cpp [224:294]
void PieceWiseCacheStats::renderStatsInternal(const InternalStats& stats,
double elapsedSecs,
std::ostream& out) {
out << folly::sformat("{:10}: {:.2f} million", "Total Processed Samples",
stats.objGets.get() / 1e6)
<< std::endl;
auto safeDiv = [](auto nr, auto dr) {
return dr == 0 ? 0.0 : 100.0 * nr / dr;
};
const double getBytesGB = stats.getBytes.get() / kGB;
const double getBytesGBPerSec = getBytesGB / elapsedSecs;
const double getBytesSuccessRate =
safeDiv(stats.getHitBytes.get(), stats.getBytes.get());
const double getBytesFullSuccessRate =
safeDiv(stats.getFullHitBytes.get(), stats.getBytes.get());
const double getBodyBytesGB = stats.getBodyBytes.get() / kGB;
const double getBodyBytesGBPerSec = getBodyBytesGB / elapsedSecs;
const double getBodyBytesSuccessRate =
safeDiv(stats.getHitBodyBytes.get(), stats.getBodyBytes.get());
const double getBodyBytesFullSuccessRate =
safeDiv(stats.getFullHitBodyBytes.get(), stats.getBodyBytes.get());
const uint64_t get = stats.objGets.get();
const uint64_t getPerSec =
util::narrow_cast<uint64_t>(stats.objGets.get() / elapsedSecs);
const double getSuccessRate =
safeDiv(stats.objGetHits.get(), stats.objGets.get());
const double getFullSuccessRate =
safeDiv(stats.objGetFullHits.get(), stats.objGets.get());
const double egressBytesGB = stats.totalEgressBytes.get() / kGB;
const double egressBytesGBPerSec = egressBytesGB / elapsedSecs;
const double ingressBytesGB = stats.totalIngressBytes.get() / kGB;
const double ingressBytesGBPerSec = ingressBytesGB / elapsedSecs;
const double ingressEgressRatio =
safeDiv(static_cast<int64_t>(stats.totalEgressBytes.get()) -
static_cast<int64_t>(stats.totalIngressBytes.get()),
stats.totalEgressBytes.get());
auto outFn = [&out](folly::StringPiece k0, double v0, folly::StringPiece k1,
double v1, folly::StringPiece k2, double v2,
folly::StringPiece k3, double v3) {
out << folly::sformat(
"{:12}: {:6.2f} GB, {:18}: {:6.2f} GB/s, {:8}: {:6.2f}%, {:10}: "
"{:6.2f}%",
k0, v0, k1, v1, k2, v2, k3, v3)
<< std::endl;
};
outFn("getBytes", getBytesGB, "getBytesPerSec", getBytesGBPerSec, "success",
getBytesSuccessRate, "full success", getBytesFullSuccessRate);
outFn("getBodyBytes", getBodyBytesGB, "getBodyBytesPerSec",
getBodyBytesGBPerSec, "success", getBodyBytesSuccessRate,
"full success", getBodyBytesFullSuccessRate);
out << folly::sformat(
"{:12}: {:6.2f} GB, {:12}: {:6.2f} GB, {:18}: {:6.2f} GB/s, "
"{:18}: {:6.2f} GB/s, {:8}: {:6.2f}%",
"egressBytes", egressBytesGB, "ingressBytes", ingressBytesGB,
"egressBytesPerSec", egressBytesGBPerSec, "ingressBytesPerSec",
ingressBytesGBPerSec, "ingressEgressratio", ingressEgressRatio)
<< std::endl;
out << folly::sformat(
"{:12}: {:10,}, {:18}: {:8,} /s, {:8}: {:6.2f}%, {:10}: {:6.2f}%",
"objectGet", get, "objectGetPerSec", getPerSec, "success",
getSuccessRate, "full success", getFullSuccessRate)
<< std::endl;
}