add progress meters to observer

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2023-03-20 12:04:11 +01:00
parent 037c4cd67a
commit 119777787e
No known key found for this signature in database
GPG Key ID: 0FE274EE8C95166E
2 changed files with 18 additions and 9 deletions

View File

@ -44,6 +44,7 @@ class Observer:
"""It checks the status of how many expected and arrived samples globally."""
arrived = 0
expected = 0
ready = 0
validated = 0
for val in validators:
if val.amIproposer == 0:
@ -51,5 +52,16 @@ class Observer:
arrived += a
expected += e
if a == e:
validated += 1
return (arrived, expected, validated)
ready += 1
validated += val.vpn
return (arrived, expected, ready, validated)
def getProgress(self, validators):
arrived, expected, ready, validated = self.checkStatus(validators)
missingSamples = expected - arrived
sampleProgress = arrived / expected
nodeProgress = ready / (len(validators)-1)
validatorCnt = sum([v.vpn for v in validators[1:]])
validatorProgress = validated / validatorCnt
return missingSamples, sampleProgress, nodeProgress, validatorProgress

View File

@ -166,7 +166,7 @@ class Simulator:
"""It runs the main simulation until the block is available or it gets stucked."""
self.glob.checkRowsColumns(self.validators)
self.validators[self.proposerID].broadcastBlock()
arrived, expected, validated = self.glob.checkStatus(self.validators)
arrived, expected, ready, validated = self.glob.checkStatus(self.validators)
missingSamples = expected - arrived
missingVector = []
steps = 0
@ -198,12 +198,9 @@ class Simulator:
for i in range(0,self.shape.numberNodes):
self.validators[i].updateStats()
arrived, expected, validated = self.glob.checkStatus(self.validators)
missingSamples = expected - arrived
missingRate = missingSamples*100/expected
self.logger.debug("step %d, missing %d of %d (%0.02f %%), validated (%0.02f %%)"
% (steps, missingSamples, expected, missingRate,
validated/(len(self.validators)-1)*100), extra=self.format)
missingSamples, sampleProgress, nodeProgress, validatorProgress = self.glob.getProgress(self.validators)
self.logger.debug("step %d, arrived %0.02f %%, ready %0.02f %%, validated %0.02f %%"
% (steps, sampleProgress*100, nodeProgress*100, validatorProgress*100), extra=self.format)
if missingSamples == oldMissingSamples:
self.logger.debug("The block cannot be recovered, failure rate %d!" % self.shape.failureRate, extra=self.format)
missingVector.append(missingSamples)