mirror of https://github.com/etcd-io/dbtester.git
analyze: updates from proto update
This commit is contained in:
parent
338300df74
commit
b990bf44bd
|
|
@ -16,9 +16,9 @@ package analyze
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"image/color"
|
|
||||||
|
|
||||||
"github.com/coreos/dbtester"
|
"github.com/coreos/dbtester/dbtesterpb"
|
||||||
|
|
||||||
"github.com/gonum/plot"
|
"github.com/gonum/plot"
|
||||||
"github.com/gonum/plot/plotter"
|
"github.com/gonum/plot/plotter"
|
||||||
"github.com/gonum/plot/plotutil"
|
"github.com/gonum/plot/plotutil"
|
||||||
|
|
@ -49,7 +49,7 @@ type triplet struct {
|
||||||
maxCol dataframe.Column
|
maxCol dataframe.Column
|
||||||
}
|
}
|
||||||
|
|
||||||
func (all *allAggregatedData) draw(cfg dbtester.Plot, pairs ...pair) error {
|
func (all *allAggregatedData) draw(cfg dbtesterpb.ConfigAnalyzeMachinePlot, pairs ...pair) error {
|
||||||
// frame now contains
|
// frame now contains
|
||||||
// AVG-LATENCY-MS-etcd-v3.1-go1.7.4, AVG-LATENCY-MS-zookeeper-r3.4.9-java8, AVG-LATENCY-MS-consul-v0.7.2-go1.7.4
|
// AVG-LATENCY-MS-etcd-v3.1-go1.7.4, AVG-LATENCY-MS-zookeeper-r3.4.9-java8, AVG-LATENCY-MS-consul-v0.7.2-go1.7.4
|
||||||
plt, err := plot.New()
|
plt, err := plot.New()
|
||||||
|
|
@ -72,7 +72,7 @@ func (all *allAggregatedData) draw(cfg dbtester.Plot, pairs ...pair) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
l.Color = getRGB(all.headerToDatabaseID[p.y.Header()], i)
|
l.Color = dbtesterpb.GetRGBI(all.headerToDatabaseID[p.y.Header()], i)
|
||||||
l.Dashes = plotutil.Dashes(i)
|
l.Dashes = plotutil.Dashes(i)
|
||||||
ps = append(ps, l)
|
ps = append(ps, l)
|
||||||
|
|
||||||
|
|
@ -88,7 +88,7 @@ func (all *allAggregatedData) draw(cfg dbtester.Plot, pairs ...pair) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (all *allAggregatedData) drawXY(cfg dbtester.Plot, pairs ...pair) error {
|
func (all *allAggregatedData) drawXY(cfg dbtesterpb.ConfigAnalyzeMachinePlot, pairs ...pair) error {
|
||||||
// frame now contains
|
// frame now contains
|
||||||
// KEYS-DB-TAG-X, AVG-LATENCY-MS-DB-TAG-Y, ...
|
// KEYS-DB-TAG-X, AVG-LATENCY-MS-DB-TAG-Y, ...
|
||||||
plt, err := plot.New()
|
plt, err := plot.New()
|
||||||
|
|
@ -111,7 +111,7 @@ func (all *allAggregatedData) drawXY(cfg dbtester.Plot, pairs ...pair) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
l.Color = getRGB(all.headerToDatabaseID[p.y.Header()], i)
|
l.Color = dbtesterpb.GetRGBI(all.headerToDatabaseID[p.y.Header()], i)
|
||||||
l.Dashes = plotutil.Dashes(i)
|
l.Dashes = plotutil.Dashes(i)
|
||||||
ps = append(ps, l)
|
ps = append(ps, l)
|
||||||
|
|
||||||
|
|
@ -127,7 +127,7 @@ func (all *allAggregatedData) drawXY(cfg dbtester.Plot, pairs ...pair) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtester.Plot, triplets ...triplet) error {
|
func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtesterpb.ConfigAnalyzeMachinePlot, triplets ...triplet) error {
|
||||||
// frame now contains
|
// frame now contains
|
||||||
// KEYS-DB-TAG-X, MIN-LATENCY-MS-DB-TAG-Y, AVG-LATENCY-MS-DB-TAG-Y, MAX-LATENCY-MS-DB-TAG-Y, ...
|
// KEYS-DB-TAG-X, MIN-LATENCY-MS-DB-TAG-Y, AVG-LATENCY-MS-DB-TAG-Y, MAX-LATENCY-MS-DB-TAG-Y, ...
|
||||||
plt, err := plot.New()
|
plt, err := plot.New()
|
||||||
|
|
@ -150,7 +150,7 @@ func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtester.Plot, triplets
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
l.Color = getRGBII(all.headerToDatabaseID[triplet.avgCol.Header()], i)
|
l.Color = dbtesterpb.GetRGBII(all.headerToDatabaseID[triplet.avgCol.Header()], i)
|
||||||
l.Dashes = plotutil.Dashes(i)
|
l.Dashes = plotutil.Dashes(i)
|
||||||
ps = append(ps, l)
|
ps = append(ps, l)
|
||||||
plt.Legend.Add(all.headerToDatabaseDescription[triplet.avgCol.Header()]+" MIN", l)
|
plt.Legend.Add(all.headerToDatabaseDescription[triplet.avgCol.Header()]+" MIN", l)
|
||||||
|
|
@ -164,7 +164,7 @@ func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtester.Plot, triplets
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
l.Color = getRGB(all.headerToDatabaseID[triplet.avgCol.Header()], i)
|
l.Color = dbtesterpb.GetRGBI(all.headerToDatabaseID[triplet.avgCol.Header()], i)
|
||||||
l.Dashes = plotutil.Dashes(i)
|
l.Dashes = plotutil.Dashes(i)
|
||||||
ps = append(ps, l)
|
ps = append(ps, l)
|
||||||
plt.Legend.Add(all.headerToDatabaseDescription[triplet.avgCol.Header()], l)
|
plt.Legend.Add(all.headerToDatabaseDescription[triplet.avgCol.Header()], l)
|
||||||
|
|
@ -178,7 +178,7 @@ func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtester.Plot, triplets
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
l.Color = getRGBIII(all.headerToDatabaseID[triplet.avgCol.Header()], i)
|
l.Color = dbtesterpb.GetRGBIII(all.headerToDatabaseID[triplet.avgCol.Header()], i)
|
||||||
l.Dashes = plotutil.Dashes(i)
|
l.Dashes = plotutil.Dashes(i)
|
||||||
ps = append(ps, l)
|
ps = append(ps, l)
|
||||||
plt.Legend.Add(all.headerToDatabaseDescription[triplet.avgCol.Header()]+" MAX", l)
|
plt.Legend.Add(all.headerToDatabaseDescription[triplet.avgCol.Header()]+" MAX", l)
|
||||||
|
|
@ -244,63 +244,3 @@ func pointsXY(colX, colY dataframe.Column) (plotter.XYs, error) {
|
||||||
}
|
}
|
||||||
return pts, nil
|
return pts, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getRGB(databaseID string, i int) color.Color {
|
|
||||||
switch databaseID {
|
|
||||||
case "etcdv2":
|
|
||||||
return color.RGBA{218, 97, 229, 255} // purple
|
|
||||||
case "etcdv3":
|
|
||||||
return color.RGBA{24, 90, 169, 255} // blue
|
|
||||||
case "etcdtip":
|
|
||||||
return color.RGBA{0, 229, 255, 255} // cyan
|
|
||||||
case "zookeeper":
|
|
||||||
return color.RGBA{38, 169, 24, 255} // green
|
|
||||||
case "consul":
|
|
||||||
return color.RGBA{198, 53, 53, 255} // red
|
|
||||||
case "zetcd":
|
|
||||||
return color.RGBA{251, 206, 0, 255} // yellow
|
|
||||||
case "cetcd":
|
|
||||||
return color.RGBA{205, 220, 57, 255} // lime
|
|
||||||
}
|
|
||||||
return plotutil.Color(i)
|
|
||||||
}
|
|
||||||
|
|
||||||
func getRGBII(databaseID string, i int) color.Color {
|
|
||||||
switch databaseID {
|
|
||||||
case "etcdv2":
|
|
||||||
return color.RGBA{229, 212, 231, 255} // light-purple
|
|
||||||
case "etcdv3":
|
|
||||||
return color.RGBA{129, 212, 247, 255} // light-blue
|
|
||||||
case "etcdtip":
|
|
||||||
return color.RGBA{132, 255, 255, 255} // light-cyan
|
|
||||||
case "zookeeper":
|
|
||||||
return color.RGBA{129, 247, 152, 255} // light-green
|
|
||||||
case "consul":
|
|
||||||
return color.RGBA{247, 156, 156, 255} // light-red
|
|
||||||
case "zetcd":
|
|
||||||
return color.RGBA{245, 247, 166, 255} // light-yellow
|
|
||||||
case "cetcd":
|
|
||||||
return color.RGBA{238, 255, 65, 255} // light-lime
|
|
||||||
}
|
|
||||||
return plotutil.Color(i)
|
|
||||||
}
|
|
||||||
|
|
||||||
func getRGBIII(databaseID string, i int) color.Color {
|
|
||||||
switch databaseID {
|
|
||||||
case "etcdv2":
|
|
||||||
return color.RGBA{165, 8, 180, 255} // deep-purple
|
|
||||||
case "etcdv3":
|
|
||||||
return color.RGBA{37, 29, 191, 255} // deep-blue
|
|
||||||
case "etcdtip":
|
|
||||||
return color.RGBA{0, 96, 100, 255} // deep-cyan
|
|
||||||
case "zookeeper":
|
|
||||||
return color.RGBA{7, 64, 35, 255} // deep-green
|
|
||||||
case "consul":
|
|
||||||
return color.RGBA{212, 8, 46, 255} // deep-red
|
|
||||||
case "zetcd":
|
|
||||||
return color.RGBA{229, 255, 0, 255} // deep-yellow
|
|
||||||
case "cetcd":
|
|
||||||
return color.RGBA{205, 220, 57, 255} // deep-lime
|
|
||||||
}
|
|
||||||
return plotutil.Color(i)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/coreos/dbtester"
|
"github.com/coreos/dbtester"
|
||||||
|
"github.com/coreos/dbtester/dbtesterpb"
|
||||||
humanize "github.com/dustin/go-humanize"
|
humanize "github.com/dustin/go-humanize"
|
||||||
"github.com/gyuho/dataframe"
|
"github.com/gyuho/dataframe"
|
||||||
"github.com/olekukonko/tablewriter"
|
"github.com/olekukonko/tablewriter"
|
||||||
|
|
@ -64,14 +65,14 @@ func do(configPath string) error {
|
||||||
|
|
||||||
all := &allAggregatedData{
|
all := &allAggregatedData{
|
||||||
title: cfg.TestTitle,
|
title: cfg.TestTitle,
|
||||||
data: make([]*analyzeData, 0, len(cfg.DatabaseIDToTestData)),
|
data: make([]*analyzeData, 0, len(cfg.DatabaseIDToConfigAnalyzeMachineInitial)),
|
||||||
headerToDatabaseID: make(map[string]string),
|
headerToDatabaseID: make(map[string]string),
|
||||||
headerToDatabaseDescription: make(map[string]string),
|
headerToDatabaseDescription: make(map[string]string),
|
||||||
allDatabaseIDList: cfg.AllDatabaseIDList,
|
allDatabaseIDList: cfg.AllDatabaseIDList,
|
||||||
}
|
}
|
||||||
for _, databaseID := range cfg.AllDatabaseIDList {
|
for _, databaseID := range cfg.AllDatabaseIDList {
|
||||||
testgroup := cfg.DatabaseIDToTestGroup[databaseID]
|
testgroup := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID]
|
||||||
testdata := cfg.DatabaseIDToTestData[databaseID]
|
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
|
||||||
|
|
||||||
plog.Printf("reading system metrics data for %s", databaseID)
|
plog.Printf("reading system metrics data for %s", databaseID)
|
||||||
ad, err := readSystemMetricsAll(testdata.ServerSystemMetricsInterpolatedPathList...)
|
ad, err := readSystemMetricsAll(testdata.ServerSystemMetricsInterpolatedPathList...)
|
||||||
|
|
@ -88,7 +89,7 @@ func do(configPath string) error {
|
||||||
if err = ad.importBenchMetrics(testdata.ClientLatencyThroughputTimeseriesPath); err != nil {
|
if err = ad.importBenchMetrics(testdata.ClientLatencyThroughputTimeseriesPath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err = ad.aggregateAll(testdata.ServerMemoryByKeyNumberPath, testdata.ServerReadBytesDeltaByKeyNumberPath, testdata.ServerWriteBytesDeltaByKeyNumberPath, testgroup.RequestNumber); err != nil {
|
if err = ad.aggregateAll(testdata.ServerMemoryByKeyNumberPath, testdata.ServerReadBytesDeltaByKeyNumberPath, testdata.ServerWriteBytesDeltaByKeyNumberPath, testgroup.ConfigClientMachineBenchmarkOptions.RequestNumber); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err = ad.save(); err != nil {
|
if err = ad.save(); err != nil {
|
||||||
|
|
@ -114,7 +115,7 @@ func do(configPath string) error {
|
||||||
// per database
|
// per database
|
||||||
for _, col := range ad.aggregated.Columns() {
|
for _, col := range ad.aggregated.Columns() {
|
||||||
databaseID := all.headerToDatabaseID[col.Header()]
|
databaseID := all.headerToDatabaseID[col.Header()]
|
||||||
row00Header = append(row00Header, cfg.DatabaseIDToTestGroup[databaseID].DatabaseTag)
|
row00Header = append(row00Header, cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID].DatabaseTag)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -272,14 +273,14 @@ func do(configPath string) error {
|
||||||
|
|
||||||
databaseIDToErrs := make(map[string][]string)
|
databaseIDToErrs := make(map[string][]string)
|
||||||
for i, databaseID := range cfg.AllDatabaseIDList {
|
for i, databaseID := range cfg.AllDatabaseIDList {
|
||||||
testgroup := cfg.DatabaseIDToTestGroup[databaseID]
|
testgroup := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID]
|
||||||
testdata := cfg.DatabaseIDToTestData[databaseID]
|
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
|
||||||
|
|
||||||
tag := testdata.DatabaseTag
|
tag := testdata.DatabaseTag
|
||||||
if tag != row00Header[i+1] {
|
if tag != row00Header[i+1] {
|
||||||
return fmt.Errorf("analyze config has different order; expected %q, got %q", row00Header[i+1], tag)
|
return fmt.Errorf("analyze config has different order; expected %q, got %q", row00Header[i+1], tag)
|
||||||
}
|
}
|
||||||
row02TotalRequestNumber = append(row02TotalRequestNumber, humanize.Comma(testgroup.RequestNumber))
|
row02TotalRequestNumber = append(row02TotalRequestNumber, humanize.Comma(testgroup.ConfigClientMachineBenchmarkOptions.RequestNumber))
|
||||||
|
|
||||||
{
|
{
|
||||||
fr, err := dataframe.NewFromCSV(nil, testdata.ClientSystemMetricsInterpolatedPath)
|
fr, err := dataframe.NewFromCSV(nil, testdata.ClientSystemMetricsInterpolatedPath)
|
||||||
|
|
@ -515,7 +516,7 @@ func do(configPath string) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
plog.Printf("saving summary data to %q", cfg.Analyze.AllAggregatedOutputPathCSV)
|
plog.Printf("saving summary data to %q", cfg.ConfigAnalyzeMachineAllAggregatedOutput.AllAggregatedOutputPathCSV)
|
||||||
aggRowsForSummaryCSV := [][]string{
|
aggRowsForSummaryCSV := [][]string{
|
||||||
row00Header,
|
row00Header,
|
||||||
row01TotalSeconds,
|
row01TotalSeconds,
|
||||||
|
|
@ -559,7 +560,7 @@ func do(configPath string) error {
|
||||||
row29SectorsWrittenDeltaSum,
|
row29SectorsWrittenDeltaSum,
|
||||||
row30AvgDiskSpaceUsage,
|
row30AvgDiskSpaceUsage,
|
||||||
}
|
}
|
||||||
file, err := openToOverwrite(cfg.Analyze.AllAggregatedOutputPathCSV)
|
file, err := openToOverwrite(cfg.ConfigAnalyzeMachineAllAggregatedOutput.AllAggregatedOutputPathCSV)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -573,7 +574,7 @@ func do(configPath string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
plog.Printf("saving summary data to %q", cfg.Analyze.AllAggregatedOutputPathTXT)
|
plog.Printf("saving summary data to %q", cfg.ConfigAnalyzeMachineAllAggregatedOutput.AllAggregatedOutputPathTXT)
|
||||||
aggRowsForSummaryTXT := [][]string{
|
aggRowsForSummaryTXT := [][]string{
|
||||||
row00Header,
|
row00Header,
|
||||||
row01TotalSeconds,
|
row01TotalSeconds,
|
||||||
|
|
@ -634,7 +635,7 @@ func do(configPath string) error {
|
||||||
if errs != "" {
|
if errs != "" {
|
||||||
stxt += "\n" + "\n" + errs
|
stxt += "\n" + "\n" + errs
|
||||||
}
|
}
|
||||||
if err := toFile(stxt, changeExtToTxt(cfg.Analyze.AllAggregatedOutputPathTXT)); err != nil {
|
if err := toFile(stxt, changeExtToTxt(cfg.ConfigAnalyzeMachineAllAggregatedOutput.AllAggregatedOutputPathTXT)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -642,7 +643,7 @@ func do(configPath string) error {
|
||||||
plog.Info("combining all latency data by keys")
|
plog.Info("combining all latency data by keys")
|
||||||
allLatencyFrame := dataframe.New()
|
allLatencyFrame := dataframe.New()
|
||||||
for _, databaseID := range cfg.AllDatabaseIDList {
|
for _, databaseID := range cfg.AllDatabaseIDList {
|
||||||
testdata := cfg.DatabaseIDToTestData[databaseID]
|
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
|
||||||
|
|
||||||
fr, err := dataframe.NewFromCSV(nil, testdata.ClientLatencyByKeyNumberPath)
|
fr, err := dataframe.NewFromCSV(nil, testdata.ClientLatencyByKeyNumberPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -688,7 +689,7 @@ func do(configPath string) error {
|
||||||
plog.Info("combining all server memory usage by keys")
|
plog.Info("combining all server memory usage by keys")
|
||||||
allMemoryFrame := dataframe.New()
|
allMemoryFrame := dataframe.New()
|
||||||
for _, databaseID := range cfg.AllDatabaseIDList {
|
for _, databaseID := range cfg.AllDatabaseIDList {
|
||||||
testdata := cfg.DatabaseIDToTestData[databaseID]
|
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
|
||||||
|
|
||||||
fr, err := dataframe.NewFromCSV(nil, testdata.ServerMemoryByKeyNumberPath)
|
fr, err := dataframe.NewFromCSV(nil, testdata.ServerMemoryByKeyNumberPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -734,7 +735,7 @@ func do(configPath string) error {
|
||||||
plog.Info("combining all server read bytes delta by keys")
|
plog.Info("combining all server read bytes delta by keys")
|
||||||
allReadBytesDeltaFrame := dataframe.New()
|
allReadBytesDeltaFrame := dataframe.New()
|
||||||
for _, databaseID := range cfg.AllDatabaseIDList {
|
for _, databaseID := range cfg.AllDatabaseIDList {
|
||||||
testdata := cfg.DatabaseIDToTestData[databaseID]
|
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
|
||||||
|
|
||||||
fr, err := dataframe.NewFromCSV(nil, testdata.ServerReadBytesDeltaByKeyNumberPath)
|
fr, err := dataframe.NewFromCSV(nil, testdata.ServerReadBytesDeltaByKeyNumberPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -771,7 +772,7 @@ func do(configPath string) error {
|
||||||
plog.Info("combining all server write bytes delta by keys")
|
plog.Info("combining all server write bytes delta by keys")
|
||||||
allWriteBytesDeltaFrame := dataframe.New()
|
allWriteBytesDeltaFrame := dataframe.New()
|
||||||
for _, databaseID := range cfg.AllDatabaseIDList {
|
for _, databaseID := range cfg.AllDatabaseIDList {
|
||||||
testdata := cfg.DatabaseIDToTestData[databaseID]
|
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
|
||||||
|
|
||||||
fr, err := dataframe.NewFromCSV(nil, testdata.ServerWriteBytesDeltaByKeyNumberPath)
|
fr, err := dataframe.NewFromCSV(nil, testdata.ServerWriteBytesDeltaByKeyNumberPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -806,14 +807,14 @@ func do(configPath string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
allLatencyFrameCfg := dbtester.Plot{
|
allLatencyFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
|
||||||
Column: "AVG-LATENCY-MS",
|
Column: "AVG-LATENCY-MS",
|
||||||
XAxis: "Cumulative Number of Keys",
|
XAxis: "Cumulative Number of Keys",
|
||||||
YAxis: "Latency(millisecond) by Keys",
|
YAxis: "Latency(millisecond) by Keys",
|
||||||
OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)),
|
OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)),
|
||||||
}
|
}
|
||||||
allLatencyFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.svg")
|
allLatencyFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.svg")
|
||||||
allLatencyFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.png")
|
allLatencyFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.png")
|
||||||
plog.Printf("plotting %v", allLatencyFrameCfg.OutputPathList)
|
plog.Printf("plotting %v", allLatencyFrameCfg.OutputPathList)
|
||||||
var pairs []pair
|
var pairs []pair
|
||||||
allCols := allLatencyFrame.Columns()
|
allCols := allLatencyFrame.Columns()
|
||||||
|
|
@ -835,21 +836,21 @@ func do(configPath string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.csv")
|
csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.csv")
|
||||||
if err := newCSV.CSV(csvPath); err != nil {
|
if err := newCSV.CSV(csvPath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
// with error points
|
// with error points
|
||||||
allLatencyFrameCfg := dbtester.Plot{
|
allLatencyFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
|
||||||
Column: "AVG-LATENCY-MS",
|
Column: "AVG-LATENCY-MS",
|
||||||
XAxis: "Cumulative Number of Keys",
|
XAxis: "Cumulative Number of Keys",
|
||||||
YAxis: "Latency(millisecond) by Keys",
|
YAxis: "Latency(millisecond) by Keys",
|
||||||
OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)),
|
OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)),
|
||||||
}
|
}
|
||||||
allLatencyFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg")
|
allLatencyFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.svg")
|
||||||
allLatencyFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.png")
|
allLatencyFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.png")
|
||||||
plog.Printf("plotting %v", allLatencyFrameCfg.OutputPathList)
|
plog.Printf("plotting %v", allLatencyFrameCfg.OutputPathList)
|
||||||
var triplets []triplet
|
var triplets []triplet
|
||||||
allCols := allLatencyFrame.Columns()
|
allCols := allLatencyFrame.Columns()
|
||||||
|
|
@ -879,20 +880,20 @@ func do(configPath string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.csv")
|
csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.csv")
|
||||||
if err := newCSV.CSV(csvPath); err != nil {
|
if err := newCSV.CSV(csvPath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
allMemoryFrameCfg := dbtester.Plot{
|
allMemoryFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
|
||||||
Column: "AVG-VMRSS-MB",
|
Column: "AVG-VMRSS-MB",
|
||||||
XAxis: "Cumulative Number of Keys",
|
XAxis: "Cumulative Number of Keys",
|
||||||
YAxis: "Memory(MB) by Keys",
|
YAxis: "Memory(MB) by Keys",
|
||||||
OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)),
|
OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)),
|
||||||
}
|
}
|
||||||
allMemoryFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.svg")
|
allMemoryFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.svg")
|
||||||
allMemoryFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.png")
|
allMemoryFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.png")
|
||||||
plog.Printf("plotting %v", allMemoryFrameCfg.OutputPathList)
|
plog.Printf("plotting %v", allMemoryFrameCfg.OutputPathList)
|
||||||
var pairs []pair
|
var pairs []pair
|
||||||
allCols := allMemoryFrame.Columns()
|
allCols := allMemoryFrame.Columns()
|
||||||
|
|
@ -914,21 +915,21 @@ func do(configPath string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.csv")
|
csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.csv")
|
||||||
if err := newCSV.CSV(csvPath); err != nil {
|
if err := newCSV.CSV(csvPath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
// with error points
|
// with error points
|
||||||
allMemoryFrameCfg := dbtester.Plot{
|
allMemoryFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
|
||||||
Column: "AVG-VMRSS-MB",
|
Column: "AVG-VMRSS-MB",
|
||||||
XAxis: "Cumulative Number of Keys",
|
XAxis: "Cumulative Number of Keys",
|
||||||
YAxis: "Memory(MB) by Keys",
|
YAxis: "Memory(MB) by Keys",
|
||||||
OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)),
|
OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)),
|
||||||
}
|
}
|
||||||
allMemoryFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg")
|
allMemoryFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.svg")
|
||||||
allMemoryFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.png")
|
allMemoryFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.png")
|
||||||
plog.Printf("plotting %v", allMemoryFrameCfg.OutputPathList)
|
plog.Printf("plotting %v", allMemoryFrameCfg.OutputPathList)
|
||||||
var triplets []triplet
|
var triplets []triplet
|
||||||
allCols := allMemoryFrame.Columns()
|
allCols := allMemoryFrame.Columns()
|
||||||
|
|
@ -958,20 +959,20 @@ func do(configPath string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.csv")
|
csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.csv")
|
||||||
if err := newCSV.CSV(csvPath); err != nil {
|
if err := newCSV.CSV(csvPath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
allReadBytesDeltaFrameCfg := dbtester.Plot{
|
allReadBytesDeltaFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
|
||||||
Column: "AVG-READ-BYTES-NUM-DELTA",
|
Column: "AVG-READ-BYTES-NUM-DELTA",
|
||||||
XAxis: "Cumulative Number of Keys",
|
XAxis: "Cumulative Number of Keys",
|
||||||
YAxis: "Average Read Bytes Delta by Keys",
|
YAxis: "Average Read Bytes Delta by Keys",
|
||||||
OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)),
|
OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)),
|
||||||
}
|
}
|
||||||
allReadBytesDeltaFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.svg")
|
allReadBytesDeltaFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.svg")
|
||||||
allReadBytesDeltaFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.png")
|
allReadBytesDeltaFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.png")
|
||||||
plog.Printf("plotting %v", allReadBytesDeltaFrameCfg.OutputPathList)
|
plog.Printf("plotting %v", allReadBytesDeltaFrameCfg.OutputPathList)
|
||||||
var pairs []pair
|
var pairs []pair
|
||||||
allCols := allReadBytesDeltaFrame.Columns()
|
allCols := allReadBytesDeltaFrame.Columns()
|
||||||
|
|
@ -984,20 +985,20 @@ func do(configPath string) error {
|
||||||
if err = all.drawXY(allReadBytesDeltaFrameCfg, pairs...); err != nil {
|
if err = all.drawXY(allReadBytesDeltaFrameCfg, pairs...); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.csv")
|
csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.csv")
|
||||||
if err := allReadBytesDeltaFrame.CSV(csvPath); err != nil {
|
if err := allReadBytesDeltaFrame.CSV(csvPath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
allWriteBytesDeltaFrameCfg := dbtester.Plot{
|
allWriteBytesDeltaFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
|
||||||
Column: "AVG-WRITE-BYTES-NUM-DELTA",
|
Column: "AVG-WRITE-BYTES-NUM-DELTA",
|
||||||
XAxis: "Cumulative Number of Keys",
|
XAxis: "Cumulative Number of Keys",
|
||||||
YAxis: "Average Write Bytes Delta by Keys",
|
YAxis: "Average Write Bytes Delta by Keys",
|
||||||
OutputPathList: make([]string, len(cfg.PlotList[0].OutputPathList)),
|
OutputPathList: make([]string, len(cfg.AnalyzePlotList[0].OutputPathList)),
|
||||||
}
|
}
|
||||||
allWriteBytesDeltaFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.svg")
|
allWriteBytesDeltaFrameCfg.OutputPathList[0] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.svg")
|
||||||
allWriteBytesDeltaFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.png")
|
allWriteBytesDeltaFrameCfg.OutputPathList[1] = filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.png")
|
||||||
plog.Printf("plotting %v", allWriteBytesDeltaFrameCfg.OutputPathList)
|
plog.Printf("plotting %v", allWriteBytesDeltaFrameCfg.OutputPathList)
|
||||||
var pairs []pair
|
var pairs []pair
|
||||||
allCols := allWriteBytesDeltaFrame.Columns()
|
allCols := allWriteBytesDeltaFrame.Columns()
|
||||||
|
|
@ -1010,21 +1011,21 @@ func do(configPath string) error {
|
||||||
if err = all.drawXY(allWriteBytesDeltaFrameCfg, pairs...); err != nil {
|
if err = all.drawXY(allWriteBytesDeltaFrameCfg, pairs...); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
csvPath := filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.csv")
|
csvPath := filepath.Join(filepath.Dir(cfg.AnalyzePlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.csv")
|
||||||
if err := allWriteBytesDeltaFrame.CSV(csvPath); err != nil {
|
if err := allWriteBytesDeltaFrame.CSV(csvPath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
plog.Println("combining data for plotting")
|
plog.Println("combining data for plotting")
|
||||||
for _, plotConfig := range cfg.PlotList {
|
for _, plotConfig := range cfg.AnalyzePlotList {
|
||||||
plog.Printf("plotting %q", plotConfig.Column)
|
plog.Printf("plotting %q", plotConfig.Column)
|
||||||
var clientNumColumns []dataframe.Column
|
var clientNumColumns []dataframe.Column
|
||||||
var pairs []pair
|
var pairs []pair
|
||||||
var dataColumns []dataframe.Column
|
var dataColumns []dataframe.Column
|
||||||
for i, ad := range all.data {
|
for i, ad := range all.data {
|
||||||
databaseID := all.allDatabaseIDList[i]
|
databaseID := all.allDatabaseIDList[i]
|
||||||
tag := cfg.DatabaseIDToTestGroup[databaseID].DatabaseTag
|
tag := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID].DatabaseTag
|
||||||
|
|
||||||
avgCol, err := ad.aggregated.Column("CONTROL-CLIENT-NUM")
|
avgCol, err := ad.aggregated.Column("CONTROL-CLIENT-NUM")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -1076,7 +1077,7 @@ func do(configPath string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(cfg.DatabaseIDToTestGroup[cfg.AllDatabaseIDList[0]].BenchmarkOptions.ConnectionClientNumbers) > 0 {
|
if len(cfg.DatabaseIDToConfigClientMachineAgentControl[cfg.AllDatabaseIDList[0]].ConfigClientMachineBenchmarkOptions.ConnectionClientNumbers) > 0 {
|
||||||
plog.Printf("aggregating data for %q of all database (by client number)", plotConfig.Column)
|
plog.Printf("aggregating data for %q of all database (by client number)", plotConfig.Column)
|
||||||
nf3 := dataframe.New()
|
nf3 := dataframe.New()
|
||||||
var firstKeys []int
|
var firstKeys []int
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue