in example_grpc/goclient/src/katranc/katranc/katranc.go [442:493]
func (kc *KatranClient) ShowLruStats() {
oldTotalPkts := uint64(0)
oldMiss := uint64(0)
oldTcpMiss := uint64(0)
oldTcpNonSynMiss := uint64(0)
oldFallbackLru := uint64(0)
for true {
lruMiss := float64(0)
tcpMiss := float64(0)
tcpNonSynMiss := float64(0)
udpMiss := float64(0)
lruHit := float64(0)
stats, err := kc.client.GetLruStats(
context.Background(), &lb_katran.Empty{})
if err != nil {
continue
}
missStats, err := kc.client.GetLruMissStats(
context.Background(), &lb_katran.Empty{})
if err != nil {
continue
}
fallbackStats, err := kc.client.GetLruFallbackStats(
context.Background(), &lb_katran.Empty{})
if err != nil {
continue
}
diffTotal := stats.V1 - oldTotalPkts
diffMiss := stats.V2 - oldMiss
diffTcpMiss := missStats.V1 - oldTcpMiss
diffTcpNonSynMiss := missStats.V2 - oldTcpNonSynMiss
diffFallbackLru := fallbackStats.V1 - oldFallbackLru
if diffTotal != 0 {
lruMiss = float64(diffMiss) / float64(diffTotal)
tcpMiss = float64(diffTcpMiss) / float64(diffTotal)
tcpNonSynMiss = float64(diffTcpNonSynMiss) / float64(diffTotal)
udpMiss = 1 - (tcpMiss + tcpNonSynMiss)
lruHit = 1 - lruMiss
}
fmt.Printf("summary: %d pkts/sec. lru hit: %.2f%% lru miss: %.2f%% ",
diffTotal, lruHit*100, lruMiss*100)
fmt.Printf("(tcp syn: %.2f%% tcp non-syn: %.2f%% udp: %.2f%%)", tcpMiss,
tcpNonSynMiss, udpMiss)
fmt.Printf(" fallback lru hit: %d pkts/sec\n", diffFallbackLru)
oldTotalPkts = stats.V1
oldMiss = stats.V2
oldTcpMiss = missStats.V1
oldTcpNonSynMiss = missStats.V2
oldFallbackLru = fallbackStats.V1
time.Sleep(1 * time.Second)
}
}