mirror of
https://github.com/cirruslabs/tart.git
synced 2026-10-03 04:31:16 +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
70 lines
3.3 KiB
Go
70 lines
3.3 KiB
Go
package fio
|
|
|
|
type Benchmark struct {
|
|
Name string
|
|
Command string
|
|
}
|
|
|
|
var benchmarks = []Benchmark{
|
|
{
|
|
// Ars Technica's "Single 4KiB random write process" test[1]
|
|
// with JSON output and created file cleanup
|
|
//
|
|
// [1]: https://arstechnica.com/gadgets/2020/02/how-fast-are-your-disks-find-out-the-open-source-way-with-fio/
|
|
Name: "Single 4KiB random write process",
|
|
Command: "fio --name=benchmark --ioengine=posixaio --rw=randwrite --bs=4k --size=4g --numjobs=1 --iodepth=1 --runtime=60 --time_based --end_fsync=1" +
|
|
" --output-format json --unlink 1",
|
|
},
|
|
{
|
|
// Ars Technica's "16 parallel 64KiB random write processes" test[1]
|
|
// with JSON outpu, created file cleanup and group reporting (for
|
|
// easier analysis)
|
|
//
|
|
// [1]: https://arstechnica.com/gadgets/2020/02/how-fast-are-your-disks-find-out-the-open-source-way-with-fio/
|
|
Name: "16 parallel 64KiB random write processes",
|
|
Command: "fio --name=benchmark --ioengine=posixaio --rw=randwrite --bs=64k --size=256m --numjobs=16 --iodepth=16 --runtime=60 --time_based --end_fsync=1" +
|
|
" --output-format json --unlink 1 --group_reporting",
|
|
},
|
|
{
|
|
// Ars Technica's "16 parallel 64KiB random write processes" test[1]
|
|
// with JSON output, created file cleanup and reduced file I/O size
|
|
// from 16 to 10 GB to avoid "No space left on device".
|
|
//
|
|
// [1]: https://arstechnica.com/gadgets/2020/02/how-fast-are-your-disks-find-out-the-open-source-way-with-fio/
|
|
Name: "Single 1MiB random write process",
|
|
Command: "fio --name=benchmark --ioengine=posixaio --rw=randwrite --bs=1m --size=10g --numjobs=1 --iodepth=1 --runtime=60 --time_based --end_fsync=1" +
|
|
" --output-format json --unlink 1",
|
|
},
|
|
{
|
|
// Oracle's "Test random read/writes" (in IOPS Performance Tests[1]) category
|
|
// with JSON output, created file cleanup, without ETA newline, without custom
|
|
// file path, with file I/O size reduced from 500GB to 2GB to prevent
|
|
// "No space left on device" and with posixaio instead of libaio.
|
|
//
|
|
// [1]: https://docs.oracle.com/en-us/iaas/Content/Block/References/samplefiocommandslinux.htm#FIO_Commands
|
|
Name: "Random reads/writes (4k)",
|
|
Command: "fio --name=benchmark --size=2GB --direct=1 --rw=randrw --bs=4k --ioengine=posixaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting" +
|
|
" --output-format json --unlink 1",
|
|
},
|
|
{
|
|
// Oracle's "Test random read/writes" (in Throughput Performance Tests[1]) category
|
|
// with JSON output, created file cleanup, without ETA newline, without custom
|
|
// file path, with file I/O size reduced from 500GB to 2GB to prevent
|
|
// "No space left on device" and with posixaio instead of libaio.
|
|
//
|
|
// [1]: https://docs.oracle.com/en-us/iaas/Content/Block/References/samplefiocommandslinux.htm#Throughput_Performance_Tests
|
|
Name: "Random reads/writes (64k)",
|
|
Command: "fio --name=benchmark --size=2GB --direct=1 --rw=randrw --bs=64k --ioengine=posixaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting" +
|
|
" --output-format json --unlink 1",
|
|
},
|
|
{
|
|
// RedHat's "How can I test to see if my environment is fast enough for etcd"[1]
|
|
// with custom name
|
|
//
|
|
// [1]: https://access.redhat.com/solutions/5726511
|
|
Name: "sync test",
|
|
Command: "mkdir -p test-data && fio --name=benchmark --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300" +
|
|
" --output-format json --unlink 1",
|
|
},
|
|
}
|