weighted

package
v0.25.15 Latest Latest
Warning

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

Go to latest
Published: May 16, 2022 License: AGPL-3.0 Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const MeterInternalPrecisionBytes = 16

MeterInternalPrecisionBytes are the amount of bytes that are used internally by the Meter to allow for metering computation smaller than one unit of computation. This allows for more fine weights. A weight of 1 unit of computation is equal to 1<<16. The minimum possible weight is 1/65536.

Variables

View Source
var (
	// DefaultComputationWeights is the default weights for computation intensities
	// these weighs make the computation metering the same as it was before dynamic execution fees
	DefaultComputationWeights = ExecutionWeights{
		common.ComputationKindStatement:          1 << MeterInternalPrecisionBytes,
		common.ComputationKindLoop:               1 << MeterInternalPrecisionBytes,
		common.ComputationKindFunctionInvocation: 1 << MeterInternalPrecisionBytes,
	}
	// DefaultMemoryWeights are empty as memory metering is not fully defined yet
	DefaultMemoryWeights = ExecutionWeights{}
)

Functions

This section is empty.

Types

type ExecutionWeights

type ExecutionWeights map[common.ComputationKind]uint64

type Meter

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

Meter collects memory and computation usage and enforces limits for any each memory/computation usage call it sums intensity multiplied by the weight of the intensity to the total memory/computation usage metrics and returns error if limits are not met.

func NewMeter

func NewMeter(computationLimit, memoryLimit uint, options ...WeightedMeterOptions) *Meter

NewMeter constructs a new Meter

func (*Meter) ComputationIntensities

func (m *Meter) ComputationIntensities() interfaceMeter.MeteredIntensities

ComputationIntensities returns all the measured computational intensities

func (*Meter) MemoryIntensities

func (m *Meter) MemoryIntensities() interfaceMeter.MeteredIntensities

MemoryIntensities returns all the measured memory intensities

func (*Meter) MergeMeter

func (m *Meter) MergeMeter(child interfaceMeter.Meter, enforceLimits bool) error

MergeMeter merges the input meter into the current meter and checks for the limits

func (*Meter) MeterComputation

func (m *Meter) MeterComputation(kind common.ComputationKind, intensity uint) error

MeterComputation captures computation usage and returns an error if it goes beyond the limit

func (*Meter) MeterMemory

func (m *Meter) MeterMemory(kind common.ComputationKind, intensity uint) error

MeterMemory captures memory usage and returns an error if it goes beyond the limit

func (*Meter) NewChild

func (m *Meter) NewChild() interfaceMeter.Meter

NewChild construct a new Meter instance with the same limits as parent

func (*Meter) SetComputationWeights

func (m *Meter) SetComputationWeights(weights map[common.ComputationKind]uint64)

SetComputationWeights sets the computation weights

func (*Meter) SetMemoryWeights

func (m *Meter) SetMemoryWeights(weights map[common.ComputationKind]uint64)

SetMemoryWeights sets the memory weights

func (*Meter) TotalComputationLimit

func (m *Meter) TotalComputationLimit() uint

TotalComputationLimit returns the total computation limit

func (*Meter) TotalComputationUsed

func (m *Meter) TotalComputationUsed() uint

TotalComputationUsed returns the total computation used

func (*Meter) TotalMemoryLimit

func (m *Meter) TotalMemoryLimit() uint

TotalMemoryLimit returns the total memory limit

func (*Meter) TotalMemoryUsed

func (m *Meter) TotalMemoryUsed() uint

TotalMemoryUsed returns the total memory used

type WeightedMeterOptions

type WeightedMeterOptions func(*Meter)

func WithComputationWeights

func WithComputationWeights(weights ExecutionWeights) WeightedMeterOptions

WithComputationWeights sets the weights for computation intensities

func WithMemoryWeights

func WithMemoryWeights(weights ExecutionWeights) WeightedMeterOptions

WithMemoryWeights sets the weights for the memory intensities

Jump to

Keyboard shortcuts

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