save progress and traffic statistics to XML

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2023-03-27 23:11:40 +02:00
parent 23af30e381
commit eb4f451303
No known key found for this signature in database
GPG Key ID: 0FE274EE8C95166E
2 changed files with 33 additions and 1 deletions

View File

@ -2,6 +2,7 @@
import networkx as nx import networkx as nx
import logging, random import logging, random
import pandas as pd
from functools import partial, partialmethod from functools import partial, partialmethod
from datetime import datetime from datetime import datetime
from DAS.tools import * from DAS.tools import *
@ -168,6 +169,7 @@ class Simulator:
arrived, expected, ready, validated = self.glob.checkStatus(self.validators) arrived, expected, ready, validated = self.glob.checkStatus(self.validators)
missingSamples = expected - arrived missingSamples = expected - arrived
missingVector = [] missingVector = []
progressVector = []
trafficStatsVector = [] trafficStatsVector = []
steps = 0 steps = 0
while(True): while(True):
@ -199,6 +201,31 @@ class Simulator:
missingSamples, sampleProgress, nodeProgress, validatorProgress = self.glob.getProgress(self.validators) missingSamples, sampleProgress, nodeProgress, validatorProgress = self.glob.getProgress(self.validators)
self.logger.debug("step %d, arrived %0.02f %%, ready %0.02f %%, validated %0.02f %%" self.logger.debug("step %d, arrived %0.02f %%, ready %0.02f %%, validated %0.02f %%"
% (steps, sampleProgress*100, nodeProgress*100, validatorProgress*100), extra=self.format) % (steps, sampleProgress*100, nodeProgress*100, validatorProgress*100), extra=self.format)
cnS = "samples received"
cnN = "nodes ready"
cnV = "validators ready"
cnT0 = "TX builder mean"
cnT1 = "TX class1 mean"
cnT2 = "TX class2 mean"
cnR1 = "RX class1 mean"
cnR2 = "RX class2 mean"
cnD1 = "Dup class1 mean"
cnD2 = "Dup class2 mean"
progressVector.append({
cnS:sampleProgress,
cnN:nodeProgress,
cnV:validatorProgress,
cnT0: trafficStats[0]["Tx"]["mean"],
cnT1: trafficStats[1]["Tx"]["mean"],
cnT2: trafficStats[2]["Tx"]["mean"],
cnR1: trafficStats[1]["Rx"]["mean"],
cnR2: trafficStats[2]["Rx"]["mean"],
cnD1: trafficStats[1]["RxDup"]["mean"],
cnD2: trafficStats[2]["RxDup"]["mean"],
})
if missingSamples == oldMissingSamples: if missingSamples == oldMissingSamples:
self.logger.debug("The block cannot be recovered, failure rate %d!" % self.shape.failureRate, extra=self.format) self.logger.debug("The block cannot be recovered, failure rate %d!" % self.shape.failureRate, extra=self.format)
missingVector.append(missingSamples) missingVector.append(missingSamples)
@ -210,7 +237,9 @@ class Simulator:
else: else:
steps += 1 steps += 1
progress = pd.DataFrame(progressVector)
if self.config.saveProgress:
self.result.addMetric("progress", progress.to_dict(orient='list'))
self.result.populate(self.shape, missingVector) self.result.populate(self.shape, missingVector)
self.result.addMetric("trafficStats", trafficStatsVector)
return self.result return self.result

View File

@ -19,6 +19,9 @@ import numpy as np
from DAS.shape import Shape from DAS.shape import Shape
dumpXML = 1 dumpXML = 1
# save progress vectors to XML
saveProgress = 1
visualization = 1 visualization = 1
logLevel = logging.INFO logLevel = logging.INFO