MCPcopy
hub / github.com/grpc/grpc-go / getStats

Method getStats

benchmark/worker/benchmark_client.go:375–424  ·  view source on GitHub ↗

getStats returns the stats for benchmark client. It resets lastResetTime and all histograms if argument reset is true.

(reset bool)

Source from the content-addressed store, hash-verified

373// getStats returns the stats for benchmark client.
374// It resets lastResetTime and all histograms if argument reset is true.
375func (bc *benchmarkClient) getStats(reset bool) *testpb.ClientStats {
376 var wallTimeElapsed, uTimeElapsed, sTimeElapsed float64
377 mergedHistogram := stats.NewHistogram(bc.histogramOptions)
378
379 if reset {
380 // Merging histogram may take some time.
381 // Put all histograms aside and merge later.
382 toMerge := make([]*stats.Histogram, len(bc.lockingHistograms))
383 for i := range bc.lockingHistograms {
384 toMerge[i] = bc.lockingHistograms[i].swap(stats.NewHistogram(bc.histogramOptions))
385 }
386
387 for i := 0; i < len(toMerge); i++ {
388 mergedHistogram.Merge(toMerge[i])
389 }
390
391 wallTimeElapsed = time.Since(bc.lastResetTime).Seconds()
392 latestRusage := syscall.GetRusage()
393 uTimeElapsed, sTimeElapsed = syscall.CPUTimeDiff(bc.rusageLastReset, latestRusage)
394
395 bc.rusageLastReset = latestRusage
396 bc.lastResetTime = time.Now()
397 } else {
398 // Merge only, not reset.
399 for i := range bc.lockingHistograms {
400 bc.lockingHistograms[i].mergeInto(mergedHistogram)
401 }
402
403 wallTimeElapsed = time.Since(bc.lastResetTime).Seconds()
404 uTimeElapsed, sTimeElapsed = syscall.CPUTimeDiff(bc.rusageLastReset, syscall.GetRusage())
405 }
406
407 b := make([]uint32, len(mergedHistogram.Buckets))
408 for i, v := range mergedHistogram.Buckets {
409 b[i] = uint32(v.Count)
410 }
411 return &testpb.ClientStats{
412 Latencies: &testpb.HistogramData{
413 Bucket: b,
414 MinSeen: float64(mergedHistogram.Min),
415 MaxSeen: float64(mergedHistogram.Max),
416 Sum: float64(mergedHistogram.Sum),
417 SumOfSquares: float64(mergedHistogram.SumOfSquares),
418 Count: float64(mergedHistogram.Count),
419 },
420 TimeElapsed: wallTimeElapsed,
421 TimeUser: uTimeElapsed,
422 TimeSystem: sTimeElapsed,
423 }
424}
425
426func (bc *benchmarkClient) shutdown() {
427 bc.closeConns()

Callers 1

RunClientMethod · 0.95

Calls 7

MergeMethod · 0.95
NewHistogramFunction · 0.92
GetRusageFunction · 0.92
CPUTimeDiffFunction · 0.92
NowMethod · 0.80
mergeIntoMethod · 0.80
swapMethod · 0.45

Tested by

no test coverage detected