Documentation
¶
Index ¶
- Constants
- func ParseBernoulli(s string, rngs rand.Source) (distuv.Rander, error)
- func ParseDistribution(s string, rngs rand.Source) (distuv.Rander, error)
- func ParseExponential(s string, rngs rand.Source) (distuv.Rander, error)
- func ParseLaplace(s string, rngs rand.Source) (distuv.Rander, error)
- func ParseNormal(s string, rngs rand.Source) (distuv.Rander, error)
- func ParsePareto(s string, rngs rand.Source) (distuv.Rander, error)
- func ParsePoisson(s string, rngs rand.Source) (distuv.Rander, error)
- func ParseUniform(s string, rngs rand.Source) (distuv.Rander, error)
- type CoinFlip
- type JitterDuration
- type Never
- type NextTask
- type TraceConfig
- type WorkloadConfig
Constants ¶
const ( SeedSkip uint64 = 10 SeedRateJitter uint64 = 20 SeedTaskJitter uint64 = 30 )
Predefined seed offsets for the various RNGs needed in a workload.
Variables ¶
This section is empty.
Functions ¶
func ParseBernoulli ¶
parse bernoulli(:time, :probability) into distuv.Bernoulli
func ParseDistribution ¶
Match a string prefix to a distuv distribution and parse its function arguments using a regular expression.
func ParseExponential ¶
parse exponential(:rate) into distuv.Exponential
func ParseLaplace ¶
parse laplace(:mu, :scale) into distuv.Exponential
func ParseNormal ¶
parse normal(:mu, :sigma) into distuv.Normal
func ParsePareto ¶
parse pareto(:time, :alpha) into distuv.Pareto
func ParsePoisson ¶
parse poisson(:time, :rate) into distuv.Poisson
Types ¶
type CoinFlip ¶
type CoinFlip struct {
// contains filtered or unexported fields
}
func NewCoinFlip ¶
Boolean coin flip based on a bernoulli distribution.
type JitterDuration ¶
type JitterDuration struct {
Fixed time.Duration
Jitter string
// contains filtered or unexported fields
}
func (*JitterDuration) Next ¶
func (jd *JitterDuration) Next() time.Duration
Return the next random duration as Fixed + Jitter.Rand()
func (*JitterDuration) Prepare ¶
func (jd *JitterDuration) Prepare(rng rand.Source) (*JitterDuration, error)
Preflight checks on the arguments and instantiate the distribution.
type TraceConfig ¶
type TraceConfig struct {
Name string
Seed uint64
Duration time.Duration
ConcurrentLimit uint64
Workloads []WorkloadConfig
}
func ReadTraceConfig ¶
func ReadTraceConfig(filename string) (trace *TraceConfig, err error)
type WorkloadConfig ¶
type WorkloadConfig struct {
Name string
Seed uint64
Skip float64
Rate JitterDuration
Task JitterDuration
// contains filtered or unexported fields
}
func (WorkloadConfig) TaskIterator ¶
func (w WorkloadConfig) TaskIterator() iter.Seq[NextTask]
Iterator that yields the next task properties without actually sleeping.
func (WorkloadConfig) TaskTriggers ¶
func (w WorkloadConfig) TaskTriggers(ctx context.Context, starter *tracebench.Starter[time.Time]) iter.Seq[tracebench.TaskTick]
Iterator that runs a workload. Attention: that means that this iterator will block and sleep according to the task instants! Use this in a goroutine to trigger function requests asynchronously.