in example/client/KatranSimpleClient.cpp [378:429]
void KatranSimpleClient::showLruStats() {
uint64_t oldTotalPkts = 0;
uint64_t oldMiss = 0;
uint64_t oldTcpMiss = 0;
uint64_t oldTcpNonSynMiss = 0;
uint64_t oldFallbackLru = 0;
while (true) {
float lruMiss = 0;
float tcpMiss = 0;
float tcpNonSynMiss = 0;
float udpMiss = 0;
float lruHit = 0;
Stats stats;
client_->sync_getLruStats(stats);
Stats missStats;
client_->sync_getLruMissStats(missStats);
Stats fallbackStats;
client_->sync_getLruFallbackStats(fallbackStats);
uint64_t diffTotal = stats.v1 - oldTotalPkts;
uint64_t diffMiss = stats.v2 - oldMiss;
uint64_t diffTcpMiss = missStats.v1 - oldTcpMiss;
uint64_t diffTcpNonSynMiss = missStats.v2 - oldTcpNonSynMiss;
uint64_t diffFallbackLru = fallbackStats.v1 - oldFallbackLru;
if (diffTotal != 0) {
lruMiss = float(diffMiss) / float(diffTotal);
tcpMiss = float(diffTcpMiss) / float(diffTotal);
tcpNonSynMiss = float(diffTcpNonSynMiss) / float(diffTotal);
udpMiss = 1 - (tcpMiss + tcpNonSynMiss);
lruHit = 1 - lruMiss;
}
LOG(INFO) << folly::sformat(
"summary: {:08d} pkts/sec. lru hit: {:.2f}, lru miss: {:.2f}",
diffTotal,
lruHit * 100,
lruMiss * 100);
LOG(INFO) << folly::sformat(
"(tcp syn: {:.2f}, tcp non-syn: {:.2f}, udp: {:.2f})",
tcpMiss,
tcpNonSynMiss,
udpMiss);
LOG(INFO) << folly::sformat(
" fallback lru hit: {:08d} pkts/sec", diffFallbackLru);
oldTotalPkts = stats.v1;
oldMiss = stats.v2;
oldTcpMiss = missStats.v1;
oldTcpNonSynMiss = missStats.v2;
oldFallbackLru = fallbackStats.v1;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}