gpt4 book ai didi

openssl - 在 Raspberry PI 2 上使用 OpenSSL AES/GCM 的性能非常差

转载 作者:行者123 更新时间:2023-12-04 08:06:24 27 4
gpt4 key购买 nike

我开发了一个简单的 C++ 程序来对 EVP 接口(interface)的 OpenSSL AES/GCM 调用的性能进行基准测试。它所做的是获取一个 1024 字节的字符串,用一个 key 对其进行加密,然后用相同的 key 对结果进行一次又一次的加密。我正在使用增量 4 字节初始化向量。

当我在我的 Macbook Pro (Intel i7) 上对其进行测试时,结果令人印象深刻:在单核上运行上述过程的 1048576 次迭代只需要一秒钟。那是 1 GB/s 的加密速度。如果我们同时使用所有内核,则为 8 GB/s(或多或少)。

现在,我在 Raspberry PI 2 上移植了相同的基准测试。但是,当我运行它时,执行 1024 次迭代需要 0.16 秒。在单核上,这或多或少是 6 MB/s。

现在,我显然明白现代、昂贵的 i7 处理器和在 Raspberry 上运行的小型 ARM 处理器之间存在巨大差异,但仍然快 170 倍。所以在假设 Raspberry PI 2 真的那么糟糕之前,我想检查一下这些参数是否合理。

有人对此进行过某种基准测试吗? Raspberry 上 6 MB/s 的加密速度是否合理?还是我做错了什么?

(我通过我的 Macbook USB 为其供电:会不会因为没有接收到足够的电量而变得如此缓慢?这听起来绝对不合理。它根本不会开机,对吧?或者是否有降频机制来省电?)

更新 1 : 我做了openssl -evp speed aes-256-cbc在我的 Macbook 和 Raspberry 上。

在 Macbook 上:

type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-256-cbc 534591.95k 564057.62k 566522.81k 570717.87k 574876.33k

在覆盆子上:
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-256-cbc 14288.53k 16653.74k 17165.31k 17298.43k 17337.00k

这仍然是 33 倍,但英特尔处理器可以利用硬件加速的 AES 调用。不过,据我所知,GCM 模式应该比 CBC 快得多。我不知道为什么,但似乎没有适合 GCM 的 openssl 基准测试,但即使假设它们的性能相同,我也错过了 3 个因素。

更新 2 查看此页面: http://elinux.org/RPi_Performance#OpenSSL .看起来我又少了 10 MB/s。总计:27 MB/s 使用 AES/CBC(应该是这样)vs 6 MB/s 使用 AES/GCM(实际上是这样)。

最佳答案

您的 Intel CPU 具有使用 AESNI 扩展的专用硬件支持。
如果不使用它进行编译,您将获得大约 250MB/s
这种性能差异听起来很合理。 (以及任何 CPU 有多少 GHz 并不能告诉您性能,除非它是完全相同的 CPU 类型,只是具有不同的时钟)

关于openssl - 在 Raspberry PI 2 上使用 OpenSSL AES/GCM 的性能非常差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31306425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com