bps

package
v3.0.0-...-791b159 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2024 License: BSD-3-Clause Imports: 3 Imported by: 0

Documentation

Overview

Package bps provides gauges for calculating the Bytes Per Second transfer rate of data streams.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Watch

func Watch(ctx context.Context, g Gauge, f SampleFunc, interval time.Duration)

Watch 会定期调用给定的 SampleFunc 来采样监控流的进度,并更新给定的指标。SampleFunc 应返回自流开始以来已传输的总字节数。

Watch 是一个阻塞调用,通常应在新的goroutine中进行。为了防止goroutine泄漏,请确保在流完成或取消时取消给定的上下文。 md5:866a6d9ed56020b3

Types

type Gauge

type Gauge interface {
	// Sample 添加监控流的新进度样本。 md5:d2b29305c97808d1
	Sample(t time.Time, n int64)

	// BPS 返回监控流的计算出的每秒字节数速率。 md5:6ca06acbcf94e710
	BPS() float64
}

Gauge是该包中所有BPS度量的通用接口。给定一段时间内的多个采样,每种度量类型都可以用来测量数据流的字节/秒传输速率。

所有采样点的时间戳和值都必须单调递增。每个采样点应表示流中的总字节数,而不是自上一个采样点以来发送的字节数。

为了确保度量能够尽快报告进度,请在数据流开始时立即获取初始采样。

所有度量实现都支持并发使用。 md5:96b611c42ceb040c

func NewSMA

func NewSMA(maxSamples int) Gauge

NewSMA 返回一个使用简单移动平均法(Simple Moving Average)的仪表,该方法使用给定的样本数量来测量字节流的每秒字节数(BPS)。

BPS 的计算基于样本缓冲区中最新和最旧样本的时间戳。当添加新样本时,如果样本数量超过 maxSamples,最旧的样本将被丢弃。

该仪表不考虑新样本到达时间的延迟或期望的窗口大小。样本到达的任何偏差都将会导致 BPS 测量值正确地适用于提交的样本,但其覆盖的时间窗口会有所变化。

maxSamples 应等于 1 + (窗口大小 / 采样间隔),其中窗口大小是平滑移动平均的时间范围(以秒为单位),采样间隔是每个样本之间的时间间隔(以秒为单位)。

例如,如果你想要一个五秒的窗口,并且每秒采样一次,maxSamples 应该是 1 + 5/1 = 6。 md5:62f6153626d33f59

type SampleFunc

type SampleFunc func() (n int64)

SampleFunc被Watch用来定期从监控流中采样。 md5:4f93786f07892dce

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL