void KatranSimpleClient::showLruStats()

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));
  }
}