[Cryptech Core] integrate_mkmif
Paul Selkirk
paul at psgd.org
Tue May 5 04:53:56 UTC 2020
I thought I had gotten all the low-hanging fruit for signing
performance, but I was wrong.
I've been running parallel-signers.py with 4 signers, because the hsm
has 4 RPC tasks by default. It has 4 tasks because that seemed like a
reasonable number at the time I first wrote it, years ago. And 4 is a
reasonable limit when we only have one modexp core, but with more
modexp, can we add more tasks to support more signers? (Yes.)
The following tests were conducted with 10 RPC tasks and up to 10
signers. Performance is expressed in signatures/second, where more is
better. :)
Note that the bitstreams with multiple modexpng cores do not have the
hash or ecdsa cores. This represents an RSA signing appliance, if such a
thing exists. But that's exactly where you'd want to focus on RSA
signing speed.
1 modexpng 2 3
1 signer 28.220 sig/sec 27.785 27.819
2 54.919 54.009 54.013
3 77.721 87.352 87.027
4 93.791 97.952 99.749
5 95.122 117.245 119.949
6 94.709 124.333 124.769
7 94.200 130.359 132.414
8 93.945 129.567 130.670
9 93.512 128.473 129.775
10 93.038 127.073 127.677
With 1 modexpng core, performance peaks with 5 signers, but not by a
lot; 4 is reasonable. With 2 or 3 modexpng cores, it peaks at 7 signers.
With too many signers, performance degrades slightly, probably because
of too much resource contention and task switching. 3 cores is only
marginally better than 2, for reasons I haven't fully explored.
If I can build a bitstream with 2 modexpng and everything else, I'll
push that to releng. I had some problems meeting timing in the past, but
maybe I'll be luckier this time?
Anyway, we can legitimately claim 130+ sig/sec with a 2048-bit key with
current Cryptech technology.
paul
More information about the Core
mailing list