loadmonitor

package
v0.35.0 Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2025 License: Unlicense Imports: 1 Imported by: 0

Documentation

Overview

Package loadmonitor defines the interface for database load monitoring. This allows different database backends to provide their own load metrics while the rate limiter remains database-agnostic.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Metrics

type Metrics struct {
	// MemoryPressure indicates memory usage relative to a target limit (0.0-1.0+).
	// Values above 1.0 indicate the target has been exceeded.
	MemoryPressure float64

	// WriteLoad indicates the write-side load level (0.0-1.0).
	// For Badger: L0 tables and compaction score
	// For Neo4j: active write transactions
	WriteLoad float64

	// ReadLoad indicates the read-side load level (0.0-1.0).
	// For Badger: cache hit ratio (inverted)
	// For Neo4j: active read transactions
	ReadLoad float64

	// QueryLatency is the recent average query latency.
	QueryLatency time.Duration

	// WriteLatency is the recent average write latency.
	WriteLatency time.Duration

	// Timestamp is when these metrics were collected.
	Timestamp time.Time
}

Metrics contains load metrics from a database backend. All values are normalized to 0.0-1.0 where 0 means no load and 1 means at capacity.

type Monitor

type Monitor interface {
	// GetMetrics returns the current load metrics.
	// This should be efficient as it may be called frequently.
	GetMetrics() Metrics

	// RecordQueryLatency records a query latency sample for averaging.
	RecordQueryLatency(latency time.Duration)

	// RecordWriteLatency records a write latency sample for averaging.
	RecordWriteLatency(latency time.Duration)

	// SetMemoryTarget sets the target memory limit in bytes.
	// Memory pressure is calculated relative to this target.
	SetMemoryTarget(bytes uint64)

	// Start begins background metric collection.
	// Returns a channel that will be closed when the monitor is stopped.
	Start() <-chan struct{}

	// Stop halts background metric collection.
	Stop()
}

Monitor defines the interface for database load monitoring. Implementations are database-specific (Badger, Neo4j, etc.).

Source Files

  • loadmonitor.go

Jump to

Keyboard shortcuts

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