mirror of
https://github.com/cirruslabs/tart.git
synced 2026-09-30 11:12:19 +02:00
* Get a fresh instance of executor for each benchmark invocation And don't pre-initialize all of the executors at once, as this might reach the maximum number of VMs limit in case we want to test multiple Tart executors. * Run benchmarks on Tart with different --root-disk-opts options * Fix TestTart * benchmark fio: introduce --prepare command-line argument To be able to specify --prepare='sudo purge && sync', similarly to Hyperfine[1]. [1]: https://github.com/sharkdp/hyperfine * Benchmark Tart with --root-disk-opts=caching=cached separately too * Add Ars Technica recommended benchmarks * Tart executor: log SSH session standard output and standard error * Reduce file I/O size from 16 to 10 GB to avoid "No space left on device" * Remove random writing tests to make space for more read/read-write tests * Add some "randrw"-style fio benchmarks * Show latency in benchmark results * Add sync benchmark and show read/write/sync latency * README.md: add new benchmark results
36 lines
672 B
Go
36 lines
672 B
Go
package fio
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
type Result struct {
|
|
Jobs []Job `json:"jobs"`
|
|
}
|
|
|
|
type Job struct {
|
|
Name string `json:"jobname"`
|
|
Read Stats `json:"read"`
|
|
Write Stats `json:"write"`
|
|
Sync Stats `json:"sync"`
|
|
}
|
|
|
|
type Stats struct {
|
|
BW float64 `json:"bw"`
|
|
IOPS float64 `json:"iops"`
|
|
LatencyNS Latency `json:"lat_ns"`
|
|
}
|
|
|
|
type Latency struct {
|
|
Mean float64 `json:"mean"`
|
|
Stddev float64 `json:"stddev"`
|
|
}
|
|
|
|
func (latency Latency) String() string {
|
|
meanDuration := time.Duration(latency.Mean) * time.Nanosecond
|
|
stddevDuration := time.Duration(latency.Stddev) * time.Nanosecond
|
|
|
|
return fmt.Sprintf("%v ± %v", meanDuration, stddevDuration)
|
|
}
|