Solaris 11 の AES-NI 高速化 ZFS v31 暗号化

Solaris 11 の AES-NI 高速化 ZFS v31 暗号化

これが質問するのに適切な場所かどうかはよくわかりませんが、そうでない場合は、適切な場所に自由に移行してください。

dd私はラボ ボックス上の ESXi 5.0 の Solaris 11.11.11 VM で ZFS v31 の暗号化機能をテストしています。11ディスクの RAIDZ3で暗号化されたフォルダーをベンチマークすると、ひどい結果が得られます。

ddベンチマーク:

# time dd if=/dev/zero of=/mypool/storage/dd.tst bs=1024000 count=10000
10000+0 records in
10000+0 records out

real    1m52.604s
user    0m0.010s
sys     0m2.715s
# time dd if=/mypool/storage/dd.tst of=/dev/null bs=1024000
10000+0 records in
10000+0 records out

real    3m15.547s
user    0m0.015s
sys     0m4.768s

翻訳すると次のようになります:

Write: 90.94 MB/s
Read: 52.366 MB/s

CPU を 100% 使用している場合。

対照的に、暗号化なしの場合、書き込み速度はほぼ 700 MB/秒、読み取り速度はおよそ 900 MB/秒になります。

示されているようにisainfo -v、aes は VM に渡されます。

# isainfo -v
64-bit amd64 applications
        xsave pclmulqdq aes sse4.2 sse4.1 ssse3 popcnt tscp cx16 sse3 sse2 sse
        fxsr mmx cmov amd_sysc cx8 tsc fpu
32-bit i386 applications
        xsave pclmulqdq aes sse4.2 sse4.1 ssse3 popcnt tscp ahf cx16 sse3 sse2
        sse fxsr mmx cmov sep cx8 tsc fpu

はい、あなたの考えはわかります。ベアメタルで試してみるべきです。実際、ベアメタルで実行しても同じ結果が得られています。VM で実行していることに言及している理由は、AES-NI が実際に機能し、仮想マシンにまったく同じ仕様を使用して ESXi 5.0 の Windows 7 64 ビット VM で TrueCrypt を使用してほぼフルスピードを実現しているからです。

VM 仕様:

  • CPU: 2 コア (Intel Xeon E3-1235 @ 3.2GHz)
  • メモリ: 8GB
  • SAS コントローラ (Vt-d および PCI パススルー経由): 2x IBM M1015 (IT ファームウェアでフラッシュ済み)
  • HDD: 11x 2TB Samsung F4EG (IBM M1015経由)

トラブルシューティングはどこから始めればよいでしょうか? Solaris 11 で AES-NI アクセラレーション暗号化を正常に使用した方はいらっしゃいますか? もしそうなら、セットアップはどのようになっていますか? また、何か特別なことをする必要がありましたか?

答え1

AES-NI はデフォルトで使用され、設定は必要ありません。ZFS は Solaris カーネル暗号化フレームワーク インターフェースを使用します。そのため、非常に簡単な DTrace で、Intel aesenc 命令を使用する関数が呼び出されたかどうかがわかります。

#!/usr/sbin/dtrace -Fs
fbt::aes_encrypt_intel:entry
{
}

fbt::aes_encrypt_intel:return
{
}

ZFS の暗号化を有効にすると、チェックサムも自動的に sha256-mac に切り替わることに注意してください。したがって、より公平な比較は、checksum=on (fletcher4) ではなく、checksum=sha256 の ZFS データセットと比較することになります。

答え2

Darren があなたの質問に答えたと思いますが、結果は ZFS と OS キャッシュによって歪んでいる可能性もあります。 を使用することはdd依然として有用ですが、(Solaris 11 では pkg benchmark/filebench) のようなものを使用する方がより有用ですfilebench

関連情報