我正在尝试评估 CPU 性能。我有一个 Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz 并运行以下命令:openssl speed rsa -multi 12 2>&1 |tee openssl-log.txt
并得到以下输出:
sign verify sign/s verify/s
rsa 512 bits 0.000008s 0.000001s 118050.6 1200000.0
rsa 1024 bits 0.000038s 0.000002s 26098.7 451567.0
rsa 2048 bits 0.000239s 0.000007s 4183.6 135606.3
rsa 4096 bits 0.001713s 0.000028s 583.7 35778.4
有人可以帮我理解输出吗? sign and verify 列是什么意思?文档似乎没有太多解释: https://www.openssl.org/docs/apps/speed.html
提前谢谢你。
最佳答案
速度测试代码在<openssl>/apps/speed.c
中.
-multi
是多个并行基准测试的开关,而不是乘法(以消除所有混淆)。查看第 1145 行的评论:
#ifndef NO_FORK
BIO_printf(bio_err,"-multi n run n benchmarks in parallel.\n");
#endif
What does the column sign and verify mean?
签名并验证按照他们所说的去做。他们使用不同的 RSA 模数对签名操作和验证操作进行计时。
Sign/s 和 Verify/s 是 Sign 和 Verify 的倒置。即,1/0.000008s => 每秒 125,000 个符号。
这是打印您看到的报告的代码。它从第 2450 行开始:
#ifndef OPENSSL_NO_RSA
j=1;
for (k=0; k<RSA_NUM; k++)
{
if (!rsa_doit[k]) continue;
if (j && !mr)
{
printf("%18ssign verify sign/s verify/s\n"," ");
j=0;
}
if(mr)
fprintf(stdout,"+F2:%u:%u:%f:%f\n",
k,rsa_bits[k],rsa_results[k][0],
rsa_results[k][1]);
else
fprintf(stdout,"rsa %4u bits %8.6fs %8.6fs %8.1f %8.1f\n",
rsa_bits[k],rsa_results[k][0],rsa_results[k][1],
1.0/rsa_results[k][0],1.0/rsa_results[k][1]);
}
#endif
找到执行签名和验证的代码作为练习留给读者 ;)
have an Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz
只是自行车脱落,但一定要config
与 enable-ec_nistp_64_gcc_128
如果您使用的是现代 GCC。使用 ec_nistp_64_gcc_128
将使某些操作(例如 DH 操作)加速 2 倍或 4 倍。
__uint128_t
需要现代 GCC . Configure
无法确定编译器是否支持 __uint128_t
独自一人,所以它离开了ec_nistp_64_gcc_128
禁用。
关于linux - 使用多选项解释 rsa 的 openssl 速度输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21322053/