DASampling: more progress metrics

Expose sampling success as a metric as well

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2024-03-19 11:37:13 +01:00
parent fedb018fea
commit 952c3c63a3
No known key found for this signature in database
GPG Key ID: 0FE274EE8C95166E
3 changed files with 38 additions and 17 deletions

View File

@ -90,6 +90,7 @@ class Observer:
arrived = 0 arrived = 0
expected = 0 expected = 0
ready = 0 ready = 0
ready1 = ready2 = ready3 = 0
nodes = 0 nodes = 0
f1 = f2 = f3 = 0 f1 = f2 = f3 = 0
@ -102,10 +103,13 @@ class Observer:
f3 += f[0] + f[1] + f[2] + f[3] f3 += f[0] + f[1] + f[2] + f[3]
arrived += a arrived += a
expected += e expected += e
if a == e: if a == e: ready += 1
ready += 1 if f[0] + f[1] == e: ready1 += 1
if f[0] + f[1] + f[2] == e: ready2 += 1
if f[0] + f[1] + f[2] + f[3] == e: ready3 += 1
nodes += 1 nodes += 1
return (arrived / expected, f3/expected, f2/expected, f1/expected, ready / nodes) return (arrived / expected, f3/expected, f2/expected, f1/expected,
ready / nodes, ready3 / nodes, ready2 / nodes, ready1 / nodes)
def getTrafficStats(self, validators): def getTrafficStats(self, validators):
"""Summary statistics of traffic measurements in a timestep.""" """Summary statistics of traffic measurements in a timestep."""

View File

@ -297,7 +297,8 @@ class Simulator:
self.validators[i].send() self.validators[i].send()
self.logger.debug("PHASE PROGRESS STATS %d" % steps, extra=self.format) self.logger.debug("PHASE PROGRESS STATS %d" % steps, extra=self.format)
missingSamples, sampleProgress, nodeProgress, validatorAllProgress, validatorProgress = self.glob.getProgress(self.validators) missingSamples, sampleProgress, nodeProgress, validatorAllProgress, validatorProgress = self.glob.getProgress(self.validators)
samplingProgressAll, samplingProgress3, samplingProgress2, samplingProgress1, _ = self.glob.getSamplingProgress(self.validators) (samplingProgressAll, samplingProgress3, samplingProgress2, samplingProgress1,
samplingReadyAll, samplingReady3, samplingReady2, samplingReady1) = self.glob.getSamplingProgress(self.validators)
self.logger.debug("PHASE RECEIVE %d" % steps, extra=self.format) self.logger.debug("PHASE RECEIVE %d" % steps, extra=self.format)
for i in range(1,self.shape.numberNodes): for i in range(1,self.shape.numberNodes):
self.validators[i].receiveRowsColumns() self.validators[i].receiveRowsColumns()
@ -320,17 +321,24 @@ class Simulator:
self.validators[i].updateStats() self.validators[i].updateStats()
trafficStatsVector.append(trafficStats) trafficStatsVector.append(trafficStats)
self.logger.info("step %d, arrived %0.02f %%, ready %0.02f %%, validatedall %0.02f %%, validated %0.02f %%, sampled %0.02f %%" self.logger.info(("step %d, arrived %0.02f %%, ready %0.02f %%, validatedall %0.02f %%, validated %0.02f %%," +
" sampled %0.02f/%0.02f/%0.02f/%0.02f %%, samplingReady %0.02f/%0.02f/%0.02f/%0.02f %%")
% (steps, sampleProgress*100, nodeProgress*100, validatorAllProgress*100, validatorProgress*100, % (steps, sampleProgress*100, nodeProgress*100, validatorAllProgress*100, validatorProgress*100,
samplingProgressAll*100), extra=self.format) samplingProgressAll*100, samplingProgress3*100, samplingProgress2*100, samplingProgress1*100,
samplingReadyAll*100, samplingReady3*100, samplingReady2*100, samplingReady1*100
), extra=self.format)
cnS = "samples received" cnS = "samples received"
cnN = "nodes ready" cnN = "nodes ready"
cnV = "validators ready" cnV = "validators ready"
cnDASall = "DASampling ready (query all)" cnDASall = "DASampling progress (query all)"
cnDAS3 = "DASampling ready (query 3)" cnDAS3 = "DASampling progress (query 3)"
cnDAS2 = "DASampling ready (query 2)" cnDAS2 = "DASampling progress (query 2)"
cnDAS1 = "DASampling ready (query 1)" cnDAS1 = "DASampling progress (query 1)"
cnDASReadyall = "DASampling ready (query all)"
cnDASReady3 = "DASampling ready (query 3)"
cnDASReady2 = "DASampling ready (query 2)"
cnDASReady1 = "DASampling ready (query 1)"
cnT0 = "TX builder mean" cnT0 = "TX builder mean"
cnT1 = "TX class1 mean" cnT1 = "TX class1 mean"
cnT2 = "TX class2 mean" cnT2 = "TX class2 mean"
@ -347,6 +355,10 @@ class Simulator:
cnDAS3:samplingProgress3, cnDAS3:samplingProgress3,
cnDAS2:samplingProgress2, cnDAS2:samplingProgress2,
cnDAS1:samplingProgress1, cnDAS1:samplingProgress1,
cnDASReadyall:samplingReadyAll,
cnDASReady3:samplingReady3,
cnDASReady2:samplingReady2,
cnDASReady1:samplingReady1,
cnT0: trafficStats[0]["Tx"]["mean"], cnT0: trafficStats[0]["Tx"]["mean"],
cnT1: trafficStats[1]["Tx"]["mean"], cnT1: trafficStats[1]["Tx"]["mean"],
cnT2: trafficStats[2]["Tx"]["mean"], cnT2: trafficStats[2]["Tx"]["mean"],

View File

@ -112,10 +112,14 @@ class Visualizor:
vector1 = result.metrics["progress"]["nodes ready"] vector1 = result.metrics["progress"]["nodes ready"]
vector2 = result.metrics["progress"]["validators ready"] vector2 = result.metrics["progress"]["validators ready"]
vector3 = result.metrics["progress"]["samples received"] vector3 = result.metrics["progress"]["samples received"]
vector4 = result.metrics["progress"]["DASampling ready (query all)"] vector4 = result.metrics["progress"]["DASampling progress (query all)"]
vector5 = result.metrics["progress"]["DASampling ready (query 3)"] vector5 = result.metrics["progress"]["DASampling progress (query 3)"]
vector6 = result.metrics["progress"]["DASampling ready (query 2)"] vector6 = result.metrics["progress"]["DASampling progress (query 2)"]
vector7 = result.metrics["progress"]["DASampling ready (query 1)"] vector7 = result.metrics["progress"]["DASampling progress (query 1)"]
vector8 = result.metrics["progress"]["DASampling ready (query all)"]
vector9 = result.metrics["progress"]["DASampling ready (query 3)"]
vector10 = result.metrics["progress"]["DASampling ready (query 2)"]
vector11 = result.metrics["progress"]["DASampling ready (query 1)"]
conf = {} conf = {}
attrbs = self.__get_attrbs__(result) attrbs = self.__get_attrbs__(result)
conf["textBox"] = "Block Size R: "+attrbs['bsrn']+"\nBlock Size C: "+attrbs['bscn']\ conf["textBox"] = "Block Size R: "+attrbs['bsrn']+"\nBlock Size C: "+attrbs['bscn']\
@ -124,12 +128,13 @@ class Visualizor:
conf["type"] = "plot" conf["type"] = "plot"
conf["legLoc"] = 2 conf["legLoc"] = 2
conf["desLoc"] = 2 conf["desLoc"] = 2
conf["colors"] = ["g-", "b-", "r-", "m-", "m--", "m-.", "m:"] conf["colors"] = ["g-", "b-", "r-", "m-", "m--", "m-.", "m:", "c-", "c--", "c-.", "c:"]
conf["labels"] = ["Nodes", "Validators", "Custody samples", conf["labels"] = ["Nodes", "Validators", "Custody samples",
"DASampling (query all)", "DASampling (query 3)", "DASampling (query 2)", "DASampling (query 1)"] "DASampling progress (query all)", "DASampling progress (query 3)", "DASampling progress (query 2)", "DASampling progress (query 1)",
"DASampling ready (query all)", "DASampling ready (query 3)", "DASampling ready (query 2)", "DASampling ready (query 1)"]
conf["xlabel"] = "Time (ms)" conf["xlabel"] = "Time (ms)"
conf["ylabel"] = "Ratio of all (0..1)" conf["ylabel"] = "Ratio of all (0..1)"
conf["data"] = [vector1, vector2, vector3, vector4, vector5, vector6, vector7] conf["data"] = [vector1, vector2, vector3, vector4, vector5, vector6, vector7, vector8, vector9, vector10, vector11 ]
conf["xdots"] = [x*self.config.stepDuration for x in range(len(vector1))] conf["xdots"] = [x*self.config.stepDuration for x in range(len(vector1))]
conf["path"] = plotPath+"/nodesReady.png" conf["path"] = plotPath+"/nodesReady.png"
maxi = 0 maxi = 0