ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3 リリースの新機能 Oracle Solaris Studio 12.3 Information Library (日本語) |
この節では、このリリースの Oracle Solaris Studio パフォーマンスアナライザと関連ツールの、新機能と変更された機能について説明します。詳細は、『Oracle Solaris Studio 12.3: パフォーマンスアナライザ』マニュアルと、パフォーマンスアナライザ内の「ヘルプ」を参照してください。
パフォーマンスアナライザツールの機能は次のように拡張されています。
大きな実験 (特に Java 実験) を処理する際のパフォーマンスが、大幅に改善されています。
データフィルタリングに多数の改善が施されましたが、これについては「フィルタリングの拡張」で説明します。
大部分のデータタブに、タブ内で右クリックして開くコンテキストメニューが含まれるようになりました。これらのコンテキストメニューを使用すれば、フィルタリングのような、タブに固有の高度な機能を表示できます。
実験の比較モードで、異なる実行可能ファイルやロードオブジェクトの実験の比較がサポートされるようになりました。比較用のソースと逆アセンブリが、2 つのバージョンの分割区画内に表示されるようになりました。実験の比較モードの有効化は、「関数」および「ソース」タブのコンテキストメニューから行えます。
タブ内でのすばやいナビゲーションの改善により、次のことが可能となりました。
「関数」タブ内である関数をダブルクリックすると、その関数の「ソース」タブが開かれます。
「行」タブ内である行をダブルクリックすると、その行かその行の近くで「ソース」タブが開かれます。
「ソース」タブ内である行をダブルクリックすると、その行の最初の命令かその近くで「逆アセンブリ」タブが開かれます。
「PC」タブ内である PC をダブルクリックすると、そのアドレスかそのアドレスの近くで「逆アセンブリ」タブが開かれます。
実験で参照されているソースファイルの検索に使用される方法が、変更されました。まずパスマップが試みられ、次に検索パスとパスマップを組み合わせたものが試みられ、その後、オリジナルのフルパスが試みられます。
タイムラインに多数の改善が施されましたが、これについては「タイムラインの拡張」で説明します。
「呼び出しツリー」タブでは HW サイクルがユーザー CPU 時間に変換されるため、呼び出しツリーに表示されるメトリックをコンテキストメニューから設定できます。
「スレッド」タブに、チャートと呼ばれる新しい表示モードが追加されました。クロックプロファイリングデータを含む実験でチャートを有効にすると、デフォルトの「ロードインバランス」チャートに、各スレッドに属する CPU 時間の合計量が表示されます。
パフォーマンスアナライザの「タイムライン」タブに施された拡張を、次に示します。
タイムラインを右クリックすると、データをフィルタリングしたり、イベントを選択したり、ズームイン/アウトを行ったり、前のビューに戻したり、タイムラインプロパティーを変更したりするためのコンテキストメニューが開きます。
イベントの頻度を時間の関数として表示する折れ線チャートである、イベント頻度チャート。このチャートはデフォルトでは表示されず、「データ表示方法の設定」ダイアログボックスで選択する必要があります。
さまざまな状態で費やされたアプリケーション時間の分布を時間の関数として表示する棒チャートである、イベント状態チャート。Oracle Solaris に記録されたクロックプロファイリングデータの場合は、イベント状態チャートに Oracle Solaris のマイクロステートが表示されます。このチャートはデフォルトでは表示されず、「データ表示方法の設定」ダイアログボックスで選択する必要があります。
タイムラインでダブルクリックすると、関数カラーチューザダイアログが開かれる代わりに、ズームインするようになりました。
「イベント」タブが新しい「タイムラインの詳細」タブで置き換えられています。この新しいタブは、以前と同じくイベント情報を提供するほか、タイムラインのナビゲーション、ズーム、および関数カラーの変更を行うためのボタンも含んでいます。
タイムラインでは、パフォーマンスアナライザの起動時にユーザーが指定したフォントが使用されるようになりました。
各実験から集約されたイベントを表示するように、タイムラインを設定することが可能です。これはデフォルトの設定ではなく、「データ表示方法の設定」ダイアログボックスの「タイムライン」タブで「データをグループ化: 実験」を選択することによって設定する必要があります。
パフォーマンスアナライザのデータフィルタリングが単純化され、拡張されました。
大部分のデータタブに、タブ内で右クリックして選択するコンテキストフィルタが含まれるようになりました。また、新規および既存のコンテキストフィルタの名前も理解しやすくなりました。
コンテキストフィルタによってデータのフィルタリングが即時に行われるようになり、フィルタリングの適用をユーザーが別のダイアログボックスで行う必要はなくなりました。コンテキストメニューフィルタの選択は、すべてのタブで使用されるデータに影響を与えます。フィルタを選択するたびに、そのフィルタと既存のすべてのフィルタとの論理積が計算されるので、データのフィルタリングを段階的に行えます。
「データをフィルタ」ダイアログボックスが単純化され、その名前が「データフィルタの管理」に変更されました。ただし、データタブのコンテキストメニューからのフィルタリングが、データをフィルタリングするための推奨の方法です。
「データフィルタの管理」ダイアログボックスの「カスタム」タブを使用すると、コンテキストメニューから適用されたフィルタの現在の状態を表示できます。「カスタム」タブは、現在のフィルタ式のユーザー編集を可能にします。またこれは、取り消し、再実行、およびコンテキストメニューフィルタから生成されたフィルタリング式に含めることのできるシンボルを記述したダイアログボックスである「キーワードの表示」もサポートします。
新しいコマンド er_label で追加されたラベルを使って実験をフィルタリングできます。
オンラインヘルプに含まれるフィルタリングに関する情報が、拡張されています。
詳細は、『Oracle Solaris Studio 12.3: パフォーマンスアナライザ』の「データのフィルタリング」を参照してください。
er_label コマンドを使用すると、実験の部分を定義し、それに名前つまりラベルを割り当てることができます。ラベルは、ユーザーが開始時刻と停止時刻のマーカーを使って定義した実験内の 1 つ以上の期間中に発生したプロファイリングイベントを取得します。
実験にラベルを割り当てるには、er_label コマンドをコマンド行で実行するか、またはそれをスクリプト内で実行します。実験へのラベルの追加が完了すると、それらのラベルを使用してフィルタリングを行えます。たとえば、実験をフィルタリングすることで、ラベルで定義される期間のプロファイリングイベントを含めたり除外したりできます。
er_label の使用方法の 1 つは、クライアントによって独立した 1 つ以上のプロセスとして駆動されるサーバープログラムのプロファイリングをサポートすることです。この使用モデルの場合、サーバーでの実験の作成を開始するため、collect コマンドを使ってサーバーを起動します。サーバーが起動され、クライアントの要求を受け入れる準備が整ったら、要求を発行してサーバーを駆動するとともに、er_label を実行してクライアント要求が発生する実験の部分にラベルを付けるようなクライアントスクリプトを実行できます。
詳細は、『Oracle Solaris Studio 12.3: パフォーマンスアナライザ』の「実験へのラベル付け」を参照してください。
実験の形式が変更され、そのバージョン番号が 12.3 になりましたが、この番号は、Oracle Solaris Studio のバージョン番号に一致します。
Oracle Solaris Studio 12.3 のツールは、次のバージョン番号の実験を開くことができます。
バージョン 10.1。Oracle Solaris Studio 12.2 または Sun Studio 12 update 1 で作成された実験。
バージョン 10.2。Beta リリースなど、Oracle Solaris Studio 12.3 の早期リリースで作成された実験。
バージョン 12.3。Oracle Solaris Studio 12.3 のリリース版で作成された実験。
以前のリリースから作成された実験を開こうとすると、以前のバージョンのツールでその実験を読み取る必要があることを示すエラーが表示されます。
データ収集の変更は、collect コマンド、dbx collector コマンド、および er_kernel コマンドに影響を与えます。
collect ユーティリティーは、このリリースで次のように変更されています。
collect はターゲットプログラムが ELF 実行可能ファイルであることを確認しないので、ユーザーは、環境変数を設定しなくてもスクリプトのプロファイリングを行えます。ターゲットが ELF 実行可能ファイルである場合、collect はそのターゲットが実行先マシンと互換性があるかチェックします。
SPARC T4 チップ、および Intel の Westmere チップと Sandy Bridge チップに対するハードウェアカウンタサポートが、Oracle Solaris で追加されました。Linux の Westmere サポートは追加済みですが、Linux の Sandy Bridge サポートはまだ実装されていません。
ハードウェアカウンタのプロファイリングで、任意の高精度ハードウェアカウンタの先頭に「+」を付けることで、任意のバイナリのメモリー領域プロファイリングを実行できるようになりました。高精度のハードウェアカウンタをサポートするプロセッサは、現時点では SPARC T4 と T3 だけです。
どのハードウェアカウンタが高精度であるかを確認するには、collect -h コマンドの出力内でキーワード precise を探します。メモリー領域プロファイリングデータを含む実験でメモリーアクセスパターンを分析するには、「データ表示方法の設定」ダイアログボックスの「タブ」タブで、Vaddress や Vline_64b などのメモリーオブジェクトタブを選択します。すると、選択したメモリーオブジェクトタブからコンテキストフィルタを使用して、データアドレスによるフィルタリングを行えるようになります。
2.6.32 より大きいバージョンを持つ Linux カーネルを実行する Linux バージョンでのハードウェアカウンタサポートは PerfEvents フレームワークで実装されているため、カーネルパッチは不要ですが、以前のシステムでは、perfctr パッチが引き続き必要となります。
collect を引数なしで実行したときに、使用方法のメッセージのみが表示されるようになりました。使用可能なハードウェアカウンタに関する情報を表示するには、collect —h を、ほかの引数を一切指定しないで実行する必要があります。
collect -p high を使って実行される高精度のクロックプロファイリングが、Oracle Linux 6 など、それをサポートする Linux システム上で使用できるようになりました。
dbx collector は、このリリースで次のように変更されています。
SPARC T4、Westmere、および Sandy Bridge チップに対するハードウェアカウンタサポートが、Oracle Solaris で追加されました。Linux の Westmere サポートは追加済みですが、Linux の Sandy Bridge サポートはまだ実装されていません。
2.6.32 より大きいバージョンを持つ Linux カーネルを実行する Linux バージョンでのハードウェアカウンタサポートは PerfEvents フレームワークで実装されているため、カーネルパッチは不要ですが、以前のシステムでは、perfctr パッチが引き続き必要となります。
Oracle Solaris カーネルのプロファイリングを行うための er_kernel ユーティリティーは、次のように変更されています。
er_kernel で、カーネルとアプリケーションのプロファイリングを実行できるようになりました。-F オプションを使用すれば、アプリケーションのプロセスを追跡し、そのデータをカーネルの実験のサブ実験として記録するかどうかを制御できます。
er_kernel では、特定のプロセスをプロファイリングするための -T オプションがサポートされなくなりました。代わりに、-F オプションと正規表現を使用できます。
er_kernel ユーティリティーは、DTrace の cpc プロバイダを使ってカーネルのハードウェアカウンタオーバーフロープロファイルを収集できますが、このプロバイダは、Oracle Solaris 11 を実行しているシステム上でのみ使用できます。カーネルのハードウェアカウンタオーバーフロープロファイリングを実行するには、collect コマンドの場合と同様に、-h オプションを er_kernel コマンドで使用します。ただし、er_kernel ではデータ領域プロファイリングはサポートされていないため、データ領域要求は無視されます。
er_kernel を引数なしで実行したときに、使用方法のメッセージのみが表示されるようになりました。使用可能なハードウェアカウンタに関する情報を表示するには、er_kernel —h を、ほかの引数を一切指定しないで実行する必要があります。
チップ上のハードウェアカウンタオーバーフローのメカニズムにより、どのカウンタがオーバーフローしたかをカーネルが知ることができる場合には、チップが提供するすべてのカウンタのプロファイリングを行えますが、それ以外の場合、指定できるカウンタは 1 つだけです。er_kernel —h の出力には、複数のカウンタを使用できるかどうかを示すために、「最大 4 つの HW カウンタを使用する HW カウンタプロファイリングを指定できます」といったメッセージが表示されます。
er_kernel はターゲット負荷が ELF 実行可能ファイルであることを確認しないので、ユーザーは任意のコマンドやスクリプトのプロファイリングを行えます。
er_print コマンドはこのリリースでは次のように変更されています。
大きな実験 (特に Java 実験) を処理する際のパフォーマンスが、大幅に改善されています。
実験で参照されているソースファイルの検索に使用される方法が、変更されました。まずパスマップが試みられ、次に検索パスとパスマップを組み合わせたものが試みられ、その後、オリジナルのフルパスが試みられます。
tlmode サブコマンドを使用すれば、各実験から集約されたイベントがタイムラインに表示されるようにするためのデフォルトを設定できます。
Oracle Solaris Studio 12.3 のスレッドアナライザで追加または変更された機能を、次に示します。
アプリケーションが競合検出プロファイリング用に計測されていない場合に、スレッドアナライザからユーザーにその旨が通知されるようになりました。
スレッドアナライザの「競合」タブで、最初の呼び出しスタックが自動的に開かれるようになりました。