dm-crypt は複数のコアを活用しますか? (マルチコア Pi クローンに興味があります)

dm-crypt は複数のコアを活用しますか? (マルチコア Pi クローンに興味があります)

シングルコアのRaspberry Piを暗号化ディスク搭載のマルチコアBanana Pi M3に置き換えることを検討しています。暗号化/復号化のパフォーマンスが現状ボトルネックとなっているため、dm-cryptによる暗号化と復号化で複数のコアを活用できるかどうか知りたいです。

答え1

はい、最近のカーネルでは、dmcryptリクエストを並列化できます。並列化パッチ統合されている4.0、一目でわかります (4.0 にはdm-crypt.cが含まれていますkthread.hが、以前のバージョンには が含まれていません)。古いバージョンでは、dmcrypt 要求に対して単一の作業キューがあったため、異なるブロックを並行して暗号化または復号化することはできませんでした (私の知る限り、異なるデバイスであっても)。

ただし、並列化は必ずしも有利ではありません。別の CPU にリクエストをディスパッチして結果を収集するには時間がかかるため、十分な数のリクエストが並列化されていて、一度に 1 つのブロックを待機していない場合にのみ有利になります。通常、複数のアプリケーションが異なるファイルにアクセスする場合は有利になりますが、1 つの大きなファイルで作業する場合はそれほど有利にはなりません (または、少し損をすることもあります)。

より優れた暗号化パフォーマンスが必要な場合は、AES アクセラレーションを備えた ARMv8 プロセッサベースのもの、つまり実際には 64 ビット CPU を入手してください。ハードウェア暗号化アクセラレーションは、最良の場合の並列化よりもはるかに大きな違いをもたらし、CPU 時間がボトルネックである限り、すべてのワークロードに役立ちます。すべての ARMv8 ベースの CPU にハードウェア暗号化アクセラレーションがあるわけではないことに注意してください (暗号化の輸出入規制に抵触しないようにするために省略されることがあります)。ただし、ハードウェア暗号化がなくても、64 ビット モードで実行すると、測定可能な速度向上が得られます。

Pi 3には暗号化拡張機能がないことが判明しました。Banana Pi M64が適しているかもしれません。暗号拡張機能がある(非常によく似た SoC 名を混同していなければ)。ただし、Pi M64 の SATA サブシステムは USB 2 上にあり (M3 と同様)、ネイティブ SATA コントローラーを備えたバージョンほど高速ではありません。そのため、暗号化によって CPU が飽和することはないため、I/O がボトルネックになる場合は、Raspberry Pi 3 でも同様に優れている可能性があります。

関連情報