簡體   English   中英

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

[英]Ridiculously poor performance with OpenSSL AES/GCM on Raspberry PI 2

我開發了一個簡單的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 :我在我的Macbook和Raspberry上做了openssl -evp speed aes-256-cbc

在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以上。 總計:使用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,這使得Pi具有大約三分之一的處理能力。

此外,我不知道在這些情況下GCM應該比CBC更快的結論。 CBC不提供身份驗證,因此單獨應該使GCM顯着降低(盡管可能不是您所看到的4倍)。

當然,如果CBC無法並行化並且GCM能夠並行,那么當您引入多個內核時,這就會消失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM