【问题标题】:Benchmarking using "openssl speed" on ZedBoard在 ZedBoard 上使用“openssl speed”进行基准测试
【发布时间】:2018-07-07 08:44:22
【问题描述】:

我正在尝试使用 openssl 在 ZedBoard 上对 AES 和 RSA 进行基准测试,并计算加密或解密一个数据块所需的时间。我能够使用 openssl speed 命令获得结果。但是,我对一些输出结果感到困惑,我希望有这方面经验的人能提供一些启示。

例如,在下面openssl speed -elapsed -evp aes-128-cbc 命令的输出中:

# openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 3721379 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 1035700 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 268675 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 67840 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 8523 aes-128-cbc's in 3.00s
OpenSSL 1.0.2j  26 Sep 2016
built on: reproducible build, date unspecified
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) idea(int) bl
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-cbc      19847.35k    22094.93k    22926.93k    23156.05k    23273.47k

在吞吐量结果的最后一行中,我了解到对于 16 字节的块大小,在 CBC 模式下运行 AES-128 1 秒将处理 19.85 MB 的数据。说加密一个数据块需要 0.806 μs 是否正确? ((16/19.85)*10^-6 秒)

其次,在使用 openssl speed 命令测试 RSA 速度时,它是否使用任何专用硬件(例如 ZedBoard 中用于对引导映像的分区进行签名并生成 RSA 密钥的 HSM)?或者有没有办法检查速度测试期间是否正在使用这个硬件模块?此外,RSA 的速度输出并没有提及签名输入消息的大小。它是根据PCKS#1 v2.1 标准根据密钥大小计算的吗? maxInputSize_inBytes

最后,使用 perf 工具(通过计算时钟周期数并计算执行)分析 RSA 实现是否与运行 openssl 速度测试相同?

我是这方面的初学者,如果我的问题过于幼稚,我深表歉意。提前致谢!

【问题讨论】:

    标签: encryption openssl cryptography benchmarking execution-time


    【解决方案1】:

    倒数吞吐量不一定等于短操作的延迟。 3.0 sec / 3721379 = 0.806 us 是加密函数在 I-cache 中热的平均时间,并且分支预测器已启动。如果您只是偶尔在较大的程序中调用该函数,它可能会更慢。

    如果任何 ZedBoard 模型具有乱序执行 CPU,则 IDK,但即使是这样,对于低功耗设备,乱序窗口和内存重新排序缓冲区的大小还是相当有限的。 (英特尔 Skylake 的重排序缓冲区为 224 微秒,但低功耗内核的乱序窗口可能只有 20 到 40 条指令。)

    无论如何,0.8 us 可能是对 16 字节块调用此函数对周围代码影响的合理估计,以将工作放入管道。

    我可能在延迟与吞吐量方面做得过大。 800 纳秒是 1GHz CPU 的 800 个时钟周期,所以可能大部分工作不能与周围的代码重叠,这确实是一个成本,你可以将其他成本加起来。但总的来说,在小范围内,流水线 CPU 的性能并非如此,尤其是 OoO CPU。


    抱歉,我对您的硬件一无所知,因此无法对问题的其他两部分发表评论。

    解决问题其余部分所需的其他答案,这只是第一部分的一般答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2012-01-23
      • 2011-04-27
      • 2012-11-11
      • 2014-02-15
      • 1970-01-01
      相关资源
      最近更新 更多