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à).
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
@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 đó! –
"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