Mat*_*nti 8 benchmarking openssl aes raspberry-pi
我开发了一个简单的C++程序来测试OpenSSL AES/GCM调用到EVP接口的性能.它的作用是取一个1024字节的字符串,用密钥加密它,然后用相同的密钥加密结果,并一次又一次地加密.我正在使用增量4字节初始化向量.
当我在我的Macbook Pro(Intel i7)上测试它时,结果非常令人印象深刻:在一个内核上运行上述过程的1048576次迭代需要一秒钟.这是1 GB/s的加密速度.如果我们同时使用所有核心,则为8 GB/s(或多或少).
现在,我在Raspberry PI 2上移植了相同的基准测试.然而,当我运行它时,需要0.16秒来完成1024次迭代.在单核上,这或多或少为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
Run Code Online (Sandbox Code Playgroud)
在覆盆子上:
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-256-cbc 14288.53k 16653.74k 17165.31k 17298.43k 17337.00k
Run Code Online (Sandbox Code Playgroud)
这仍然是因素33,但英特尔处理器可以使用硬件加速AES调用.不过,据我所知,GCM模式应该比CBC快得多.我不知道为什么但看起来没有一个用于GCM的openssl基准权利,但即使假设它们的表现相同,我也错过了一个因素3.
更新2检查此页面:http://elinux.org/RPi_Performance#OpenSSL.看起来我缺少10 MB/s以上.总计:使用AES/CBC(应该是)为27 MB/s,使用AES/GCM为6 MB/s(实际上是这样).
您的Intel CPU使用AESNI扩展提供专用硬件支持.如果你在没有它的情况下进行编译,你将获得大约250MB/s的性能差异听起来合理.(并且任何CPU有多少GHz都没有告诉你性能,除非它只是使用不同的时钟完全相同的CPU类型)
如果您还没有考虑到这一点,为什么 3 的系数不能用大约 3 倍的处理能力差异来解释呢?
Raspberry Pi 2 具有 900Mhz 处理器,典型的 i7 处理器具有 2.8Ghz,这使得 Raspberry Pi 具有大约三分之一的处理能力。
另外,我不知道您从哪里得出这样的结论:在这种情况下 GCM 应该比 CBC 更快。CBC 不提供身份验证,因此仅此一项就会使 GCM 明显变慢(尽管可能不是您看到的 4 倍)。
当然,当您引入多个核心时,这种情况就会消失,因为 CBC 无法并行化,而 GCM 可以。
| 归档时间: |
|
| 查看次数: |
4630 次 |
| 最近记录: |