X

Oracle Solaris, Oarcle ハードウェア製品に関する情報

SPARC の暗号化処理ハードウェアの稼働状況を観察する方法

Guest Author



はじめに

SPARC M7 チップ には暗号化処理のハードウェアアクセラレータが搭載されています。このブログエントリーでは、CPU 内蔵の暗号化命令が利用されていることを観察する方法をご紹介します。この記事は Eric Reid による ブログ記事 の翻訳版です。

翻訳文

最近このブログで SPARC M7 チップ内蔵の暗号化機能の素晴らしさについて紹介してきました。実際に Oracle のパートナーさまのソフトウェアでも活用例が出てきています。ある時、読者の方から「自分の動かしているソフトウェアで暗号化機能が使われているかどうか確認するにはどうしたら良いのか?」という質問をいただきました。とても良い質問です。2012 年に ダン・アンダーソン が書いた「SPARC T4 の暗号化機能が使われているかを確認する方法 」を最新情報にアップデートしたいと思います。

SPARC T4 の当時は、CPU の暗号化機能へのアクセスはユーザランドからの関数呼び出しで実現されていましたので、DTrace を使って稼働状況を観察することができました。その後、Solaris 11 の暗号化フレームワークでは、より直接的に SPARC の暗号化命令を使用するように実装が改善されました。この変更は OpenSSL など多くのソフトウェアに影響が及ぶものでした。以前に比べて綺麗な実装となった一方で、暗号化機能の稼働状況を DTrace で観察することは難しくなりました。

その代わりに cpustatcputrack コマンドを使うことができます。

cpustat と cputrack は CPU のパフォーマンス・カウンターにアクセスするコマンドです。これらを使って SPARC の暗号化機能のカウンターに記録された実行回数を読み出すことができます。

SPARC T4 以降の CPU と Solaris 11 では以下のように実行できます。

# # シングルソケットの SPARC T4 サーバで実行した例
#
# # 全プロセス、全 CPU からの暗号化命令の呼び出し回数を 1 秒分表示
# cpustat –c pic0=Instr_FGU_crypto 1 1
time cpu event pic0
1.021 0 tick 5
1.021 1 tick 5
1.021 2 tick 5
1.021 3 tick 11
1.010 4 tick 5
1.014 5 tick 5
1.016 6 tick 11
1.010 7 tick 5
1.016 8 tick 106
1.019 9 tick 358
1.004 10 tick 22
1.003 11 tick 54
1.021 12 tick 25
1.014 13 tick 203
1.006 14 tick 10
1.019 15 tick 385
1.008 16 tick 2652
1.006 17 tick 15
1.009 18 tick 20
1.006 19 tick 195
1.011 20 tick 15
1.019 21 tick 83
1.015 22 tick 49
1.021 23 tick 206
1.020 24 tick 485
1.019 25 tick 10
1.021 26 tick 10
1.021 27 tick 471
1.014 28 tick 1396
1.021 29 tick 10
1.018 30 tick 26
1.012 31 tick 10
1.021 32 total 6868
# # 全プロセスからの暗号化命令の実行回数を CPU ソケット単位で表示
# cpustat –c pic0=Instr_FGU_crypto –A soc 1 1
time soc event pic0
1.014 0 tick 7218
1.014 256 total 7218
# # プロセス ID 10221 のプロセスが暗号化命令を呼び出した回数をファイルに出力
# cputrack –c pic0=Instr_FGU_crypto –p 10221 –o outputfile

ノート 1 : Oracle VM for SPARC (LDoms) のバージョン 3.2 より前のリリースでは、このコマンドをゲストドメイン内で実行することはできません。バージョン 3.2 以降では perf-counters プロパティを設定することでゲストドメインからのアクセスを許可することができます。

ノート 2 : Solaris 11 のデフォルトでは、非大域ゾーンからこれらのコマンドを実行することは許可されていません。limitpriv="default,cpu_cpu" を設定することで変更できます。

これで CPU による暗号化処理がどのくらい使用されているかを観察することができるようになりました。もう少し直感的に測定できるように、相対的な使用回数を表示する bash のスクリプトを作成してみました。ご自由にお使いください。以下がスクリプトのソースコードと使用例です(SPARC M7 で実行しました)。

# cat crypto_histo.bash
#! /bin/bash
while (true); do
echo `cpustat -c pic0=Instr_FGU_crypto -A soc 1 1 | \
grep total | \
awk '{
num=4*int(log($NF)/log(10));
hist="";
for (i=0; i<num; i++) hist=hist"=";
print hist
}'`
done
#
# スクリプトを起動し、別ウィンドウから "openssl speed -evp AES-192-CBC" を実行
# ./crypto_histo.bash
============
============
============
============================
================================
====================================
====================================
====================================
====================================
====================================
====================================
============
================
============
============
============

SPARC に内蔵されたの暗号化処理ハードウェアは、常時有効になっており、驚くほど高速で、容易に観察可能です。

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.