Documentation
¶
Index ¶
- Constants
- Variables
- type BenchmarkRunner
- func (b *BenchmarkRunner) DatabaseName() string
- func (b *BenchmarkRunner) DebugLevel() int
- func (b *BenchmarkRunner) DoPrintResponses() bool
- func (b *BenchmarkRunner) GetBufferedReader() *bufio.Reader
- func (b *BenchmarkRunner) Run(queryPool *sync.Pool, processorCreateFn ProcessorCreate)
- func (b *BenchmarkRunner) SetLimit(limit uint64)
- type BenchmarkRunnerConfig
- type HTTP
- type LoaderTestResult
- type Processor
- type ProcessorCreate
- type Query
- type Stat
- type TDengine
- type TimescaleDB
Constants ¶
const BenchmarkTestResultVersion = "0.1"
Variables ¶
var HTTPPool = sync.Pool{ New: func() interface{} { return &HTTP{ HumanLabel: []byte{}, HumanDescription: []byte{}, Method: []byte{}, Path: []byte{}, Body: []byte{}, RawQuery: []byte{}, StartTimestamp: 0, EndTimestamp: 0, } }, }
HTTPPool is a sync.Pool of HTTP Query types
var TDenginePool = sync.Pool{ New: func() interface{} { return &TDengine{ HumanLabel: make([]byte, 0, 1024), HumanDescription: make([]byte, 0, 1024), SqlQuery: make([]byte, 0, 1024), } }, }
TDenginePool is a sync.Pool of TDengine Query types
var TimescaleDBPool = sync.Pool{ New: func() interface{} { return &TimescaleDB{ HumanLabel: make([]byte, 0, 1024), HumanDescription: make([]byte, 0, 1024), Hypertable: make([]byte, 0, 1024), SqlQuery: make([]byte, 0, 1024), } }, }
TimescaleDBPool is a sync.Pool of TimescaleDB Query types
Functions ¶
This section is empty.
Types ¶
type BenchmarkRunner ¶
type BenchmarkRunner struct {
BenchmarkRunnerConfig
// contains filtered or unexported fields
}
BenchmarkRunner contains the common components for running a query benchmarking program against a database.
func NewBenchmarkRunner ¶
func NewBenchmarkRunner(config BenchmarkRunnerConfig) *BenchmarkRunner
NewBenchmarkRunner creates a new instance of BenchmarkRunner which is common functionality to be used by query benchmarker programs
func (*BenchmarkRunner) DatabaseName ¶
func (b *BenchmarkRunner) DatabaseName() string
DatabaseName returns the name of the database to run queries against
func (*BenchmarkRunner) DebugLevel ¶
func (b *BenchmarkRunner) DebugLevel() int
DebugLevel returns the level of debug messages for this benchmark
func (*BenchmarkRunner) DoPrintResponses ¶
func (b *BenchmarkRunner) DoPrintResponses() bool
DoPrintResponses indicates whether responses for queries should be printed
func (*BenchmarkRunner) GetBufferedReader ¶
func (b *BenchmarkRunner) GetBufferedReader() *bufio.Reader
GetBufferedReader returns the buffered Reader that should be used by the loader
func (*BenchmarkRunner) Run ¶
func (b *BenchmarkRunner) Run(queryPool *sync.Pool, processorCreateFn ProcessorCreate)
Run does the bulk of the benchmark execution. It launches a goroutine to track stats, creates workers to process queries, read in the input, execute the queries, and then does cleanup.
func (*BenchmarkRunner) SetLimit ¶
func (b *BenchmarkRunner) SetLimit(limit uint64)
SetLimit changes the number of queries to run, with 0 being all of them
type BenchmarkRunnerConfig ¶
type BenchmarkRunnerConfig struct {
DBName string `mapstructure:"db-name"`
Limit uint64 `mapstructure:"max-queries"`
LimitRPS uint64 `mapstructure:"max-rps"`
MemProfile string `mapstructure:"memprofile"`
HDRLatenciesFile string `mapstructure:"hdr-latencies"`
Workers uint `mapstructure:"workers"`
PrintResponses bool `mapstructure:"print-responses"`
Debug int `mapstructure:"debug"`
FileName string `mapstructure:"file"`
BurnIn uint64 `mapstructure:"burn-in"`
PrintInterval uint64 `mapstructure:"print-interval"`
PrewarmQueries bool `mapstructure:"prewarm-queries"`
ResultsFile string `mapstructure:"results-file"`
}
BenchmarkRunnerConfig is the configuration of the benchmark runner.
func (BenchmarkRunnerConfig) AddToFlagSet ¶
func (c BenchmarkRunnerConfig) AddToFlagSet(fs *pflag.FlagSet)
AddToFlagSet adds command line flags needed by the BenchmarkRunnerConfig to the flag set.
type HTTP ¶
type HTTP struct {
HumanLabel []byte
HumanDescription []byte
Method []byte
Path []byte
Body []byte
RawQuery []byte
StartTimestamp int64
EndTimestamp int64
// contains filtered or unexported fields
}
HTTP encodes an HTTP request. This will typically be serialized for use by the appropriate tsbs_run_queries program.
func (*HTTP) HumanDescriptionName ¶
HumanDescriptionName returns the human readable description of this Query
func (*HTTP) HumanLabelName ¶
HumanLabelName returns the human readable name of this Query
type LoaderTestResult ¶
type LoaderTestResult struct {
// Format Configs
ResultFormatVersion string `json:"ResultFormatVersion"`
// RunnerConfig Configs
RunnerConfig BenchmarkRunnerConfig `json:"RunnerConfig"`
// Run info
StartTime int64 `json:"StartTime`
EndTime int64 `json:"EndTime"`
DurationMillis int64 `json:"DurationMillis"`
// Totals
Totals map[string]interface{} `json:"Totals"`
}
LoaderTestResult aggregates the results of an query benchmark in a common format across targets
type Processor ¶
type Processor interface {
// Init initializes at global state for the Processor, possibly based on its worker number / ID
Init(workerNum int)
// ProcessQuery handles a given query and reports its stats
ProcessQuery(q Query, isWarm bool) ([]*Stat, error)
}
Processor is an interface that handles the setup of a query processing worker and executes queries one at a time
type ProcessorCreate ¶
type ProcessorCreate func() Processor
ProcessorCreate is a function that creates a new Processor (called in Run)
type Query ¶
type Query interface {
Release()
HumanLabelName() []byte
HumanDescriptionName() []byte
GetID() uint64
SetID(uint64)
fmt.Stringer
}
Query is an interface used for encoding a benchmark query for different databases
type Stat ¶
type Stat struct {
// contains filtered or unexported fields
}
Stat represents one statistical measurement, typically used to store the latency of a query (or part of query).
func GetPartialStat ¶
func GetPartialStat() *Stat
GetPartialStat returns a partial Stat for use from a pool
type TDengine ¶
type TDengine struct {
HumanLabel []byte
HumanDescription []byte
SqlQuery []byte
// contains filtered or unexported fields
}
TDengine encodes a TDengine request. This will be serialized for use by the run_queries_tdengine program.
func (*TDengine) HumanDescriptionName ¶
HumanDescriptionName returns the human-readable description of this Query
func (*TDengine) HumanLabelName ¶
HumanLabelName returns the human-readable name of this Query
type TimescaleDB ¶
type TimescaleDB struct {
HumanLabel []byte
HumanDescription []byte
Hypertable []byte // e.g. "cpu"
SqlQuery []byte
// contains filtered or unexported fields
}
TimescaleDB encodes a TimescaleDB request. This will be serialized for use by the run_queries_timescaledb program.
func NewTimescaleDB ¶
func NewTimescaleDB() *TimescaleDB
NewTimescaleDB returns a new TimescaleDB Query instance
func (*TimescaleDB) HumanDescriptionName ¶
func (q *TimescaleDB) HumanDescriptionName() []byte
HumanDescriptionName returns the human readable description of this Query
func (*TimescaleDB) HumanLabelName ¶
func (q *TimescaleDB) HumanLabelName() []byte
HumanLabelName returns the human readable name of this Query
func (*TimescaleDB) Release ¶
func (q *TimescaleDB) Release()
Release resets and returns this Query to its pool
func (*TimescaleDB) String ¶
func (q *TimescaleDB) String() string
String produces a debug-ready description of a Query.