使用多选项解释rsa的openssl速度输出

时间:2014-01-24 00:18:19

标签: linux performance openssl rsa

我正在尝试评估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

有人可以帮我理解输出吗?列标记和验证意味着什么?文档似乎没有解释太多: https://www.openssl.org/docs/apps/speed.html

提前谢谢。

1 个答案:

答案 0 :(得分:5)

速度测试的代码位于<openssl>/apps/speed.c

-multi是并行多个基准测试的开关,而不是乘法(以消除所有混淆)。请参阅第1145行附近的评论:

#ifndef NO_FORK
    BIO_printf(bio_err,"-multi n        run n benchmarks in parallel.\n");
#endif

  

列标记和验证是什么意思?

签名并验证他们所说的话。他们使用不同的RSA模数对签名操作和验证操作进行计时。

Sign / s和Verify / s是Sign and Verify的反转。即,1 / 0.000008s =&gt;每秒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

找到执行签名和验证的代码留给读者练习;)


  

拥有Intel(R)Xeon(R)CPU E5-1650 v2 @ 3.50GHz

只是自行车脱落,但如果您使用的是现代GCC,请确保configenable-ec_nistp_64_gcc_128。使用ec_nistp_64_gcc_128可以将某些操作(例如DH操作)加速2倍或4倍。

您需要__uint128_t的现代GCC。 Configure无法确定编译器是否支持__uint128_t,因此会禁用ec_nistp_64_gcc_128