2015-07-09 38 views
7

Tôi đã phát triển một chương trình C++ đơn giản để đánh giá hiệu suất của các cuộc gọi OpenSSL AES/GCM tới giao diện EVP. Những gì nó làm là để có một chuỗi 1024 byte, mã hóa nó với một khóa, sau đó mã hóa kết quả với cùng một khóa, và một lần nữa và một lần nữa. Tôi đang sử dụng các vectơ khởi tạo 4 byte gia tăng.Hiệu năng kém hiệu quả với OpenSSL AES/GCM trên Raspberry PI 2

Khi tôi thử nghiệm trên Macbook Pro (Intel i7) kết quả khá ấn tượng: mất một giây để chạy 1048576 lần lặp lại quy trình trên trên một lõi đơn. Đó là tốc độ mã hóa 1 GB/giây. 8 GB/s (nhiều hơn hoặc ít hơn) nếu chúng ta sử dụng đồng thời tất cả các lõi.

Bây giờ, tôi đã chuyển cùng một điểm chuẩn trên Raspberry PI 2. Khi tôi chạy nó, tuy nhiên, phải mất 0,16 giây để thực hiện 1024 lần lặp lại. Đó là nhiều hơn hoặc ít hơn 6 MB/s, trên một lõi đơn. Bây giờ, tôi rõ ràng hiểu rằng có một sự khác biệt rất lớn giữa bộ vi xử lý hiện đại, đắt tiền và bộ xử lý ARM nhỏ chạy trên quả mâm xôi, nhưng vẫn nhanh hơn 170 lần so với trước đây. Vì vậy, trước khi giả định rằng Raspberry PI 2 là thực sự là xấu, tôi muốn kiểm tra xem các thông số đó có hợp lý hay không.

Có ai đã thực hiện một số loại điểm chuẩn nào không? Tốc độ mã hóa 6 MB/s có hợp lý trên quả mâm xôi không? Hay tôi đang làm gì sai?

(Tôi đang cấp nguồn qua USB Macbook của mình: điều đó có thể chậm đến mức không nhận được đủ năng lượng không? Điều đó chắc chắn không hợp lý. Nó sẽ không có sức mạnh gì cả, đúng không? Hoặc có thể có một cơ chế ép xung để tiết kiệm điện?)

CẬP NHẬT 1: Tôi đã làm openssl -evp speed aes-256-cbc trên cả Macbook và Mâm xôi của tôi.

Trên 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 

Trên mâm xôi:

type    16 bytes  64 bytes 256 bytes 1024 bytes 8192 bytes 
aes-256-cbc  14288.53k 16653.74k 17165.31k 17298.43k 17337.00k 

Đó vẫn là một yếu tố 33, nhưng bộ vi xử lý Intel có thể tận dụng phần cứng tăng tốc AES gọi. Tuy nhiên, theo như tôi biết chế độ GCM nên được khá nhanh hơn so với CBC. Tôi không biết tại sao nhưng có vẻ như không có quyền chuẩn mở openssl cho GCM, nhưng thậm chí giả sử họ đang thực hiện giống hệt tôi thiếu một yếu tố 3.

CẬP NHẬT 2 Kiểm tra trang này: http://elinux.org/RPi_Performance#OpenSSL. Có vẻ như tôi đang thiếu 10 MB/giây nữa. Tổng cộng: 27 MB/s với AES/CBC (như nó phải là) so với 6 MB/s với AES/GCM (như nó thực sự là).

+1

Tôi tìm thấy điều này trong khi tìm cách để tăng hiệu năng SSH/SCP của pi2 . Bạn đã bao giờ nhận được bất kỳ hiệu suất được cải thiện nào chưa? Tôi đã tìm thấy http://www.psc.edu/index.php/hpn-ssh, nhưng chưa xem xét. Tôi muốn tìm một cái gì đó thấp hỗ trợ (nó không phải là một pi) để cho tôi SSH đủ nhanh để dòng phương tiện truyền thông thấp đến giữa-def từ NAS vào điện thoại của tôi. – Nanook

+1

@Nookook Tôi thực sự xin lỗi, nhưng tôi đã không đi sâu hơn vào điều đó, nếu tôi nhớ rõ. Tôi không nghĩ rằng tôi đã từng đạt được hiệu suất đó cao hơn, nhưng tôi không có trí nhớ tốt. Chúc may mắn với điều đó! –

+1

"Tuy nhiên, theo như tôi biết chế độ GCM nên khá nhanh hơn CBC" điều này là không chính xác. CBC chỉ cần tính toán mã hóa X nếu bạn có X khối, trong khi GCM cần (2 * X) + 1 khối tính toán cộng với một số toán học trên các lĩnh vực Galouis ở giữa. – Shnatsel

Trả lời

1

Nếu bạn chưa tính toán nó, tại sao yếu tố 3 không được giải thích bởi yếu tố khoảng 3 sự khác biệt về sức mạnh xử lý?

Raspberry Pi 2 có bộ vi xử lý 900Mhz và bộ vi xử lý i7 điển hình có 2.8Ghz, kết quả trong Pi có khoảng 1/3 công suất xử lý.

Ngoài ra, tôi không biết bạn sẽ nhận được kết luận rằng GCM sẽ nhanh hơn CBC trong những trường hợp này. CBC không cung cấp xác thực, do đó, đơn độc nên làm cho GCM có thể chậm hơn một chút (mặc dù có lẽ không phải là hệ số 4 bạn nhìn thấy).

Tất nhiên, điều đó sẽ xuất hiện khi bạn mang nhiều lõi, vì CBC không thể song song và GCM có thể.

4

CPU Intel của bạn đã dành riêng phần cứng hỗ trợ bằng cách sử dụng phần mở rộng AESNI. Nếu bạn biên dịch mà không có điều đó, bạn sẽ nhận được khoảng 250MB/s Sự khác biệt trong âm thanh hiệu suất hợp lý. (Và bao nhiêu GHz bất kỳ CPU nào đã cho bạn biết gì về hiệu suất, ngoại trừ nếu nó chính xác cùng loại CPU chỉ với đồng hồ khác)

Các vấn đề liên quan