gradient

package
v0.2.3 Latest Latest
Warning

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

Go to latest
Published: Sep 13, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package gradient implements Little's Law (L = λ * W) Gradient Adaptive Concurrency Limiting.

Index

Constants

This section is empty.

Variables

View Source
var ErrLoadShedded = errors.New("request shed by adaptive gradient concurrency limiter")

ErrLoadShedded is returned when a request is rejected due to adaptive concurrency overload.

Functions

func WithStartTime

func WithStartTime(ctx context.Context) context.Context

WithStartTime injects request start time into context for RTT measurement in Done().

Types

type GradientConfig

type GradientConfig struct {
	MinLimit      float64       // Minimum concurrency floor (default: 10)
	MaxLimit      float64       // Maximum concurrency ceiling (default: 1000)
	InitialLimit  float64       // Initial concurrency limit (default: 100)
	QueueSize     float64       // Headroom queue size added to gradient calculation (default: 4.0)
	Smoothing     float64       // Exponential smoothing factor alpha (0.0 to 1.0, default: 0.2)
	RttWindowSize time.Duration // Sliding window size for minRTT tracking (default: 30s)
	SampleRate    int64         // Sample 1 out of N requests for RTT limit updates (default: 1)
}

GradientConfig configures the Little's Law Gradient concurrency limiter.

func DefaultGradientConfig

func DefaultGradientConfig() GradientConfig

DefaultGradientConfig returns sensible defaults.

type GradientLoadShedder

type GradientLoadShedder struct {
	// contains filtered or unexported fields
}

GradientLoadShedder implements Little's Law Gradient Adaptive Concurrency Limiting.

func NewGradientLoadShedder

func NewGradientLoadShedder(cfg ...GradientConfig) *GradientLoadShedder

NewGradientLoadShedder creates a new GradientLoadShedder instance.

func (*GradientLoadShedder) Allow

func (g *GradientLoadShedder) Allow(ctx context.Context, resource string) error

Allow decides whether to admit the incoming request based on current dynamic concurrency limit.

func (*GradientLoadShedder) Done

func (g *GradientLoadShedder) Done(ctx context.Context, resource string, err error)

Done completes the request lifecycle, updates inflight counts and adjusts concurrency limits via RTT sampling.

func (*GradientLoadShedder) InFlight

func (g *GradientLoadShedder) InFlight() int64

InFlight returns current inflight requests.

func (*GradientLoadShedder) Limit

func (g *GradientLoadShedder) Limit() float64

Limit returns current concurrency limit.

func (*GradientLoadShedder) RecordSample

func (g *GradientLoadShedder) RecordSample(rtt time.Duration)

RecordSample explicitly records an RTT sample and updates Little's Law Gradient concurrency limits.

func (*GradientLoadShedder) UpdateConfig

UpdateConfig updates runtime configuration parameters.

Jump to

Keyboard shortcuts

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