Skip to content

Commit 7f7e427

Browse files
Merge pull request #20 from RedisGraph/internal.external.latency.diff
Added ratio/absoute difference between external and internal latency summaries
2 parents 781906c + 239908f commit 7f7e427

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

redisgraph-bechmark-go.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,13 @@ func main() {
178178
testResult.FillDurationInfo(startTime, endTime, duration)
179179
testResult.BenchmarkFullyRun = totalCommands == *numberRequests
180180
testResult.IssuedCommands = totalCommands
181-
testResult.OverallGraphInternalLatencies = GetOverallLatencies(queries, serverSide_PerQuery_GraphInternalTime_OverallLatencies, serverSide_AllQueries_GraphInternalTime_OverallLatencies)
182-
testResult.OverallClientLatencies = GetOverallLatencies(queries, clientSide_PerQuery_OverallLatencies, clientSide_AllQueries_OverallLatencies)
181+
overallGraphInternalLatencies, internalLatencyMap := GetOverallLatencies(queries, serverSide_PerQuery_GraphInternalTime_OverallLatencies, serverSide_AllQueries_GraphInternalTime_OverallLatencies)
182+
overallClientLatencies, clientLatencyMap := GetOverallLatencies(queries, clientSide_PerQuery_OverallLatencies, clientSide_AllQueries_OverallLatencies)
183+
relativeLatencyDiff, absoluteLatencyDiff := GenerateInternalExternalRatioLatencies(internalLatencyMap, clientLatencyMap)
184+
testResult.OverallClientLatencies = overallClientLatencies
185+
testResult.OverallGraphInternalLatencies = overallGraphInternalLatencies
186+
testResult.AbsoluteInternalExternalLatencyDiff = absoluteLatencyDiff
187+
testResult.RelativeInternalExternalLatencyDiff = relativeLatencyDiff
183188
testResult.OverallQueryRates = GetOverallRatesMap(duration, queries, clientSide_PerQuery_OverallLatencies, clientSide_AllQueries_OverallLatencies)
184189
testResult.DBSpecificConfigs = GetDBConfigsMap(redisgraphVersion)
185190
testResult.Totals = GetTotalsMap(queries, clientSide_PerQuery_OverallLatencies, clientSide_AllQueries_OverallLatencies, errorsPerQuery, totalNodesCreatedPerQuery, totalNodesDeletedPerQuery, totalLabelsAddedPerQuery, totalPropertiesSetPerQuery, totalRelationshipsCreatedPerQuery, totalRelationshipsDeletedPerQuery)

test_result.go

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/HdrHistogram/hdrhistogram-go"
77
"io/ioutil"
88
"log"
9+
"math"
910
"os"
1011
"sync"
1112
"sync/atomic"
@@ -63,6 +64,12 @@ type TestResult struct {
6364
// Overall Graph Internal Quantiles
6465
OverallGraphInternalLatencies map[string]interface{} `json:"OverallGraphInternalLatencies"`
6566

67+
// Relative Internal External Latencies Differences
68+
RelativeInternalExternalLatencyDiff map[string]float64 `json:"OverallRelativeInternalExternalLatencyDiff"`
69+
70+
// Relative Internal External Latencies Differences
71+
AbsoluteInternalExternalLatencyDiff map[string]float64 `json:"OverallAbsoluteInternalExternalLatencyDiff"`
72+
6673
// Per second ( tick ) client stats
6774
ClientRunTimeStats map[int64]interface{} `json:"ClientRunTimeStats"`
6875

@@ -188,15 +195,33 @@ func generateLatenciesMap(hist *hdrhistogram.Histogram) (int64, map[string]float
188195
return ops, mp
189196
}
190197

191-
func GetOverallLatencies(cmds []string, perQueryHistograms []*hdrhistogram.Histogram, totalsHistogram *hdrhistogram.Histogram) map[string]interface{} {
198+
func GetOverallLatencies(cmds []string, perQueryHistograms []*hdrhistogram.Histogram, totalsHistogram *hdrhistogram.Histogram) (map[string]interface{}, map[string]float64) {
192199
perQueryQuantileMap := map[string]interface{}{}
193200
for i, query := range cmds {
194201
_, quantileMap := generateLatenciesMap(perQueryHistograms[i])
195202
perQueryQuantileMap[query] = quantileMap
196203
}
197204
_, totalMap := generateLatenciesMap(totalsHistogram)
198205
perQueryQuantileMap["Total"] = totalMap
199-
return perQueryQuantileMap
206+
return perQueryQuantileMap, totalMap
207+
}
208+
209+
func GenerateInternalExternalRatioLatencies(internal map[string]float64, external map[string]float64) (ratioMap map[string]float64, absoluteMap map[string]float64) {
210+
ratioMap = map[string]float64{}
211+
absoluteMap = map[string]float64{}
212+
for quantile, internalQuantileValue := range internal {
213+
214+
externalQuantileValue := external[quantile]
215+
absoluteDiff := externalQuantileValue - internalQuantileValue
216+
relativeDiff := externalQuantileValue / internalQuantileValue
217+
if !math.IsNaN(relativeDiff) {
218+
ratioMap[quantile] = relativeDiff
219+
}
220+
if !math.IsNaN(absoluteDiff) {
221+
absoluteMap[quantile] = absoluteDiff
222+
}
223+
}
224+
return
200225
}
201226

202227
func GetOverallRatesMap(took time.Duration, cmds []string, perQueryHistograms []*hdrhistogram.Histogram, totalsHistogram *hdrhistogram.Histogram) map[string]interface{} {

0 commit comments

Comments
 (0)