aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2018-03-03 17:41:15 -0500
committerRob Austein <sra@hactrn.net>2018-03-03 17:41:15 -0500
commit90405d32719260adc75c9c23fb3b7d9e33485e85 (patch)
tree7cea550368bc87992302d38878c77456b2e02abe
parent50923a78e66d7039689131e9933e7a21c1083310 (diff)
More useful script output.
Overall performance numbers are still bad. Presumably having a single global PKCS #11 lock does not help here. Need a bitstream with more ModExp and ECDSA cores before this will matter much, but will likely need to figure out some way to do per-session locking instead of global for operations we want to run in parallel. At which point we'll be on the road to deadlock hell, so will need some care.
-rwxr-xr-xscripts/thready-time-signature.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/scripts/thready-time-signature.py b/scripts/thready-time-signature.py
index c7240df..fb84c1e 100755
--- a/scripts/thready-time-signature.py
+++ b/scripts/thready-time-signature.py
@@ -87,8 +87,9 @@ class ECDSAKey(object):
class Results(object):
- def __init__(self):
+ def __init__(self, name):
self.lock = threading.RLock()
+ self.name = name
self.sum = datetime.timedelta(seconds = 0)
self.t0 = datetime.datetime.now()
self.t1 = None
@@ -107,14 +108,18 @@ class Results(object):
return self.sum / self.n
@property
- def tmean(self):
+ def throughput(self):
return (self.t1 - self.t0) / self.n
+ @property
+ def sigs_per_second(self):
+ return self.n / (self.t1 - self.t0).total_seconds()
+
def report(self):
with self.lock:
if self.t1 is None:
self.t1 = datetime.datetime.now()
- print "n {0.n} t0 {0.t0} t1 {0.t1} mean {0.mean} tmean {0.tmean}".format(self)
+ print "{0.name} sigs/second {0.sigs_per_second} mean {0.mean} throughput {0.throughput} (n {0.n}, t0 {0.t0}, t1 {0.t1})".format(self)
class Worker(threading.Thread):
@@ -172,14 +177,15 @@ def main():
for name in args.keys:
- print "Starting test with key {}, {} iterations".format(name, args.iterations)
+ if not args.quiet:
+ print "Starting test with key {}, {} iterations".format(name, args.iterations)
k = key_table[name]
k.create(args, p11, session, "Your mother was a hamster")
global results
- results = Results()
+ results = Results(name)
for i in xrange(args.iterations):
q.put(k)