in swim/stats.go [81:104]
func (n *Node) ProtocolStats() ProtocolStats {
timing := n.gossip.ProtocolTiming()
return ProtocolStats{
Timing{
Type: "histogram",
Min: timing.Min(),
Max: timing.Max(),
Sum: timing.Sum(),
Variance: timing.Variance(),
Mean: timing.Mean(),
StdDev: timing.StdDev(),
Count: timing.Count(),
Median: timing.Percentile(0.5),
P75: timing.Percentile(0.75),
P95: timing.Percentile(0.95),
P99: timing.Percentile(0.99),
P999: timing.Percentile(0.999),
},
n.gossip.ProtocolRate(),
n.clientRate.Rate1(),
n.serverRate.Rate1(),
n.totalRate.Rate1(),
}
}