mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-11-14 12:15:18 +00:00
61 lines
1.9 KiB
Go
61 lines
1.9 KiB
Go
|
// Copyright 2021 The LevelDB-Go and Pebble Authors. All rights reserved. Use
|
||
|
// of this source code is governed by a BSD-style license that can be found in
|
||
|
// the LICENSE file.
|
||
|
|
||
|
// mkbench is a utility for processing the raw nightly benchmark data in JSON
|
||
|
// data that can be visualized by docs/js/app.js. The raw data is expected to
|
||
|
// be stored in dated directories underneath the "data/" directory:
|
||
|
//
|
||
|
// data/YYYYMMDD/.../<file>
|
||
|
//
|
||
|
// The files are expected to be bzip2 compressed. Within each file mkbench
|
||
|
// looks for Go-bench-style lines of the form:
|
||
|
//
|
||
|
// Benchmark<name> %d %f ops/sec %d read %d write %f r-amp %f w-amp
|
||
|
//
|
||
|
// The output is written to "data.js". In order to avoid reading all of the raw
|
||
|
// data to regenerate "data.js" on every run, mkbench first reads "data.js",
|
||
|
// noting which days have already been processed and exluding files in those
|
||
|
// directories from being read. This has the additional effect of merging the
|
||
|
// existing "data.js" with new raw data, which avoids needing to have all of
|
||
|
// the raw data present to construct a new "data.js" (only the new raw data is
|
||
|
// necessary).
|
||
|
//
|
||
|
// The nightly Pebble benchmarks are orchestrated from the CockroachDB
|
||
|
// repo:
|
||
|
//
|
||
|
// https://github.com/cockroachdb/cockroach/blob/master/build/teamcity-nightly-pebble.sh
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
|
||
|
"github.com/spf13/cobra"
|
||
|
)
|
||
|
|
||
|
var rootCmd = &cobra.Command{
|
||
|
Use: "mkbench",
|
||
|
Short: "pebble benchmark data tools",
|
||
|
}
|
||
|
|
||
|
func init() {
|
||
|
y := getYCSBCommand()
|
||
|
rootCmd.AddCommand(getYCSBCommand())
|
||
|
rootCmd.AddCommand(getWriteCommand())
|
||
|
rootCmd.SilenceUsage = true
|
||
|
|
||
|
// For backwards compatability, the YCSB command is run, with the same
|
||
|
// flags, if a subcommand is not specified.
|
||
|
// TODO(travers): Remove this after updating the call site in the
|
||
|
// nightly-pebble script in cockroach.
|
||
|
*rootCmd.Flags() = *y.Flags()
|
||
|
rootCmd.RunE = y.RunE
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
if err := rootCmd.Execute(); err != nil {
|
||
|
// Cobra has already printed the error message.
|
||
|
os.Exit(1)
|
||
|
}
|
||
|
}
|