analyze: updates from proto update

This commit is contained in:
Gyu-Ho Lee 2017-02-23 08:03:59 -08:00
parent 338300df74
commit b990bf44bd
No known key found for this signature in database
GPG Key ID: 1DDD39C7EB70C24C
2 changed files with 60 additions and 119 deletions

View File

@ -16,9 +16,9 @@ package analyze
import (
"fmt"
"image/color"
"github.com/coreos/dbtester"
"github.com/coreos/dbtester/dbtesterpb"
"github.com/gonum/plot"
"github.com/gonum/plot/plotter"
"github.com/gonum/plot/plotutil"
@ -49,7 +49,7 @@ type triplet struct {
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
// 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()
@ -72,7 +72,7 @@ func (all *allAggregatedData) draw(cfg dbtester.Plot, pairs ...pair) error {
if err != nil {
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)
ps = append(ps, l)
@ -88,7 +88,7 @@ func (all *allAggregatedData) draw(cfg dbtester.Plot, pairs ...pair) error {
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
// KEYS-DB-TAG-X, AVG-LATENCY-MS-DB-TAG-Y, ...
plt, err := plot.New()
@ -111,7 +111,7 @@ func (all *allAggregatedData) drawXY(cfg dbtester.Plot, pairs ...pair) error {
if err != nil {
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)
ps = append(ps, l)
@ -127,7 +127,7 @@ func (all *allAggregatedData) drawXY(cfg dbtester.Plot, pairs ...pair) error {
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
// 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()
@ -150,7 +150,7 @@ func (all *allAggregatedData) drawXYWithErrorPoints(cfg dbtester.Plot, triplets
if err != nil {
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)
ps = append(ps, 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 {
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)
ps = append(ps, 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 {
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)
ps = append(ps, 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
}
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)
}

View File

@ -25,6 +25,7 @@ import (
"strings"
"github.com/coreos/dbtester"
"github.com/coreos/dbtester/dbtesterpb"
humanize "github.com/dustin/go-humanize"
"github.com/gyuho/dataframe"
"github.com/olekukonko/tablewriter"
@ -64,14 +65,14 @@ func do(configPath string) error {
all := &allAggregatedData{
title: cfg.TestTitle,
data: make([]*analyzeData, 0, len(cfg.DatabaseIDToTestData)),
data: make([]*analyzeData, 0, len(cfg.DatabaseIDToConfigAnalyzeMachineInitial)),
headerToDatabaseID: make(map[string]string),
headerToDatabaseDescription: make(map[string]string),
allDatabaseIDList: cfg.AllDatabaseIDList,
}
for _, databaseID := range cfg.AllDatabaseIDList {
testgroup := cfg.DatabaseIDToTestGroup[databaseID]
testdata := cfg.DatabaseIDToTestData[databaseID]
testgroup := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID]
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
plog.Printf("reading system metrics data for %s", databaseID)
ad, err := readSystemMetricsAll(testdata.ServerSystemMetricsInterpolatedPathList...)
@ -88,7 +89,7 @@ func do(configPath string) error {
if err = ad.importBenchMetrics(testdata.ClientLatencyThroughputTimeseriesPath); err != nil {
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
}
if err = ad.save(); err != nil {
@ -114,7 +115,7 @@ func do(configPath string) error {
// per database
for _, col := range ad.aggregated.Columns() {
databaseID := all.headerToDatabaseID[col.Header()]
row00Header = append(row00Header, cfg.DatabaseIDToTestGroup[databaseID].DatabaseTag)
row00Header = append(row00Header, cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID].DatabaseTag)
break
}
}
@ -272,14 +273,14 @@ func do(configPath string) error {
databaseIDToErrs := make(map[string][]string)
for i, databaseID := range cfg.AllDatabaseIDList {
testgroup := cfg.DatabaseIDToTestGroup[databaseID]
testdata := cfg.DatabaseIDToTestData[databaseID]
testgroup := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID]
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
tag := testdata.DatabaseTag
if tag != row00Header[i+1] {
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)
@ -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{
row00Header,
row01TotalSeconds,
@ -559,7 +560,7 @@ func do(configPath string) error {
row29SectorsWrittenDeltaSum,
row30AvgDiskSpaceUsage,
}
file, err := openToOverwrite(cfg.Analyze.AllAggregatedOutputPathCSV)
file, err := openToOverwrite(cfg.ConfigAnalyzeMachineAllAggregatedOutput.AllAggregatedOutputPathCSV)
if err != nil {
return err
}
@ -573,7 +574,7 @@ func do(configPath string) error {
return err
}
plog.Printf("saving summary data to %q", cfg.Analyze.AllAggregatedOutputPathTXT)
plog.Printf("saving summary data to %q", cfg.ConfigAnalyzeMachineAllAggregatedOutput.AllAggregatedOutputPathTXT)
aggRowsForSummaryTXT := [][]string{
row00Header,
row01TotalSeconds,
@ -634,7 +635,7 @@ func do(configPath string) error {
if 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
}
@ -642,7 +643,7 @@ func do(configPath string) error {
plog.Info("combining all latency data by keys")
allLatencyFrame := dataframe.New()
for _, databaseID := range cfg.AllDatabaseIDList {
testdata := cfg.DatabaseIDToTestData[databaseID]
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
fr, err := dataframe.NewFromCSV(nil, testdata.ClientLatencyByKeyNumberPath)
if err != nil {
@ -688,7 +689,7 @@ func do(configPath string) error {
plog.Info("combining all server memory usage by keys")
allMemoryFrame := dataframe.New()
for _, databaseID := range cfg.AllDatabaseIDList {
testdata := cfg.DatabaseIDToTestData[databaseID]
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
fr, err := dataframe.NewFromCSV(nil, testdata.ServerMemoryByKeyNumberPath)
if err != nil {
@ -734,7 +735,7 @@ func do(configPath string) error {
plog.Info("combining all server read bytes delta by keys")
allReadBytesDeltaFrame := dataframe.New()
for _, databaseID := range cfg.AllDatabaseIDList {
testdata := cfg.DatabaseIDToTestData[databaseID]
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
fr, err := dataframe.NewFromCSV(nil, testdata.ServerReadBytesDeltaByKeyNumberPath)
if err != nil {
@ -771,7 +772,7 @@ func do(configPath string) error {
plog.Info("combining all server write bytes delta by keys")
allWriteBytesDeltaFrame := dataframe.New()
for _, databaseID := range cfg.AllDatabaseIDList {
testdata := cfg.DatabaseIDToTestData[databaseID]
testdata := cfg.DatabaseIDToConfigAnalyzeMachineInitial[databaseID]
fr, err := dataframe.NewFromCSV(nil, testdata.ServerWriteBytesDeltaByKeyNumberPath)
if err != nil {
@ -806,14 +807,14 @@ func do(configPath string) error {
}
{
allLatencyFrameCfg := dbtester.Plot{
allLatencyFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
Column: "AVG-LATENCY-MS",
XAxis: "Cumulative Number of 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[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.png")
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.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY.png")
plog.Printf("plotting %v", allLatencyFrameCfg.OutputPathList)
var pairs []pair
allCols := allLatencyFrame.Columns()
@ -835,21 +836,21 @@ func do(configPath string) error {
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 {
return err
}
}
{
// with error points
allLatencyFrameCfg := dbtester.Plot{
allLatencyFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
Column: "AVG-LATENCY-MS",
XAxis: "Cumulative Number of 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[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.png")
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.AnalyzePlotList[0].OutputPathList[0]), "AVG-LATENCY-MS-BY-KEY-ERROR-POINTS.png")
plog.Printf("plotting %v", allLatencyFrameCfg.OutputPathList)
var triplets []triplet
allCols := allLatencyFrame.Columns()
@ -879,20 +880,20 @@ func do(configPath string) error {
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 {
return err
}
}
{
allMemoryFrameCfg := dbtester.Plot{
allMemoryFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
Column: "AVG-VMRSS-MB",
XAxis: "Cumulative Number of 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[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.png")
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.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY.png")
plog.Printf("plotting %v", allMemoryFrameCfg.OutputPathList)
var pairs []pair
allCols := allMemoryFrame.Columns()
@ -914,21 +915,21 @@ func do(configPath string) error {
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 {
return err
}
}
{
// with error points
allMemoryFrameCfg := dbtester.Plot{
allMemoryFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
Column: "AVG-VMRSS-MB",
XAxis: "Cumulative Number of 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[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.png")
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.AnalyzePlotList[0].OutputPathList[0]), "AVG-VMRSS-MB-BY-KEY-ERROR-POINTS.png")
plog.Printf("plotting %v", allMemoryFrameCfg.OutputPathList)
var triplets []triplet
allCols := allMemoryFrame.Columns()
@ -958,20 +959,20 @@ func do(configPath string) error {
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 {
return err
}
}
{
allReadBytesDeltaFrameCfg := dbtester.Plot{
allReadBytesDeltaFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
Column: "AVG-READ-BYTES-NUM-DELTA",
XAxis: "Cumulative Number of 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[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.png")
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.AnalyzePlotList[0].OutputPathList[0]), "AVG-READ-BYTES-NUM-DELTA-BY-KEY.png")
plog.Printf("plotting %v", allReadBytesDeltaFrameCfg.OutputPathList)
var pairs []pair
allCols := allReadBytesDeltaFrame.Columns()
@ -984,20 +985,20 @@ func do(configPath string) error {
if err = all.drawXY(allReadBytesDeltaFrameCfg, pairs...); err != nil {
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 {
return err
}
}
{
allWriteBytesDeltaFrameCfg := dbtester.Plot{
allWriteBytesDeltaFrameCfg := dbtesterpb.ConfigAnalyzeMachinePlot{
Column: "AVG-WRITE-BYTES-NUM-DELTA",
XAxis: "Cumulative Number of 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[1] = filepath.Join(filepath.Dir(cfg.PlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.png")
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.AnalyzePlotList[0].OutputPathList[0]), "AVG-WRITE-BYTES-NUM-DELTA-BY-KEY.png")
plog.Printf("plotting %v", allWriteBytesDeltaFrameCfg.OutputPathList)
var pairs []pair
allCols := allWriteBytesDeltaFrame.Columns()
@ -1010,21 +1011,21 @@ func do(configPath string) error {
if err = all.drawXY(allWriteBytesDeltaFrameCfg, pairs...); err != nil {
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 {
return err
}
}
plog.Println("combining data for plotting")
for _, plotConfig := range cfg.PlotList {
for _, plotConfig := range cfg.AnalyzePlotList {
plog.Printf("plotting %q", plotConfig.Column)
var clientNumColumns []dataframe.Column
var pairs []pair
var dataColumns []dataframe.Column
for i, ad := range all.data {
databaseID := all.allDatabaseIDList[i]
tag := cfg.DatabaseIDToTestGroup[databaseID].DatabaseTag
tag := cfg.DatabaseIDToConfigClientMachineAgentControl[databaseID].DatabaseTag
avgCol, err := ad.aggregated.Column("CONTROL-CLIENT-NUM")
if err != nil {
@ -1076,7 +1077,7 @@ func do(configPath string) error {
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)
nf3 := dataframe.New()
var firstKeys []int