JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: パフォーマンスアナライザ     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  パフォーマンスアナライザの概要

2.  パフォーマンスデータ

3.  パフォーマンスデータの収集

4.  パフォーマンスアナライザツール

5.   er_print コマンド行パフォーマンス解析ツール

6.  パフォーマンスアナライザとそのデータについて

7.  注釈付きソースと逆アセンブリデータについて

8.  実験の操作

実験の操作

er_cp ユーティリティーを使った実験のコピー

er_mv ユーティリティーを使った実験の移動

er_rm ユーティリティーを使った実験の削除

実験へのラベル付け

er_label コマンドの構文

er_label の例

スクリプトでの er_label の使用

その他のユーティリティー

er_archive ユーティリティー

-n

-q

-A

-F

-V

er_export ユーティリティー

9.  カーネルプロファイリング

索引

実験へのラベル付け

er_label コマンドを使用すると、実験の部分を定義し、それに名前つまりラベルを割り当てることができます。ラベルは、ユーザーが開始時刻と停止時刻のマーカーを使って定義した実験内の 1 つ以上の期間中に発生したプロファイリングイベントを取得します。

時刻マーカーは、現在時刻、時間オフセットだけ増減した現在時刻、または実験の開始時刻に対するオフセットとして指定できます。ラベルには時間間隔をいくつでも指定でき、作成後のラベルに間隔を追加することもできます。

er_label ユーティリティーでは、間隔にはマーカーのペア (開始時刻のあとに停止時刻) が指定されていると想定しています。停止マーカーが開始マーカーの前に指定されていたり、開始マーカーが前の開始マーカーのあとに続いている (間に停止マーカーがない)、停止マーカーが前の停止マーカーのあとに続いている (間に開始マーカーがない) など、順序がおかしいマーカーはユーティリティーによって無視されます。

実験にラベルを割り当てるには、er_label コマンドをコマンド行で実行するか、またはそれをスクリプト内で実行します。実験へのラベルの追加が完了すると、それらのラベルを使用してフィルタリングを行えます。たとえば、「フィルタリングのためのラベルの使用」で説明されているように、ラベルに定義されている期間のプロファイリングイベントを含めたり除外したりするように実験をフィルタリングしてもかまいません。


注 - ほかのキーワードと同じラベル名 (フィルタリングに使用される可能性のあるもの) は、競合や予期しない結果を招く可能性があるため、作成しないようにしてください。er_print -describe コマンドを使用して、実験のキーワードを確認できます。


er_label コマンドの構文

er_label コマンドの構文です。

er_label -o experiment-name -n label-name -t {start|stop}[=time-specification] [-C comment

オプションは次のように定義されています。

-o experiment-name は必須オプションで、ラベルを付ける実験の名前を指定します。実験名は 1 つだけ指定でき、実験グループはサポートされません。-o オプションは、コマンド行の任意の場所に指定できます。

-n label-name は必須オプションで、ラベル名を指定します。ラベルは英数字である必要があり、空白を含めてはいけませんが、長さは任意でかまいません。このラベルが実験にすでに存在する場合は、指定された時刻マーカーとコメントがラベルに追加されます。-n オプションは、コマンド行の任意の場所に指定できます。

-C comment は、ラベルに関する省略可能なコメントです。シェルまたはスクリプトの要件に応じて、コメントを引用符で囲む場合と囲まない場合があります。1 つのラベルに複数の -C オプションを使用でき、ラベルが表示されるときにはコメントが空白をはさんで連結されます。たとえば、ラベル内の各時間間隔に関する情報を提供するために、複数のコメントを使用できます。ラベルに複数のコメントを使用するときは、各コメントの末尾にセミコロンなどの区切り文字を追加するとよいでしょう。

-t start|stop =time-specification は、実験内の時間範囲を定義するために使用される、開始点または停止点の指定です。=time-specification を省略した場合は、現在時刻のマーカーが作成されます。

time-specification は、次のいずれかの形式で指定できます。

hh:mm:ss.uuu

開始マーカーまたは停止マーカーを置くべき位置を、実験の開始からの相対時間で指定します。少なくとも秒を指定する必要があり、時、分、およびサブ秒は任意で指定できます。

指定する時間の値は、次のように解釈されます。

nn

整数 (コロンなし) を指定した場合は、秒と解釈されます。値が 60 より大きい場合、ラベルでは秒が mm:ss に変換されます。たとえば、-t start=120 は、実験の開始後 02:00 に開始マーカーを置きます。

nn.nn

任意の精度の小数を含めた場合は、秒の小数部と解釈され、ナノ秒精度で保存されます。たとえば、-t start=120.3 は、実験の開始後 02:00.300 (2 分と 300 ナノ秒) に開始マーカーを置きます。

nn:nn

nn:nn 形式を使用して時間を指定した場合は、mm:ss と解釈され、mm の値が 60 より大きい場合、時間は hh:mm:ss に変換されます。ss に指定する数値は 0 - 59 である必要があり、それ以外の場合はエラーが発生します。たとえば、-t start=90:30 は、実験の開始後 01:30:30 (1 時間 30 分 30 秒) に開始マーカーを置きます。

nn:nn:nn

nn:nn:nn 形式を使用して時間を指定した場合は、hh:mm:ss と解釈されます。分と秒に指定する数値は 0 - 59 である必要があり、それ以外の場合はエラーが発生します。たとえば、-t stop=01:45:10 は、実験の開始後 1 時間 45 分 10 秒に停止マーカーを置きます。

@

実験のマーカーを er_label コマンドが実行された時点に置くために現在時刻を指定します。現在時刻はコマンドの 1 回の呼び出しで一度設定され、@ を使用する追加マーカーは元のタイムスタンプ値を基準として設定されます。

@+offset

現在のタイムスタンプよりあとの時間を指定します (offset は、前述と同じ hh:mm:ss.uuu 規則を使用する時間)。この時間形式では、元のタイムスタンプより指定の時間だけあとにマーカーが置かれます。たとえば、-t stop=@+180 は、現在時刻より 3 分後に停止マーカーを置きます。

@-offset

現在のタイムスタンプより前の時間を指定します (offset は、前述と同じ hh:mm:ss.uuu 規則を使用する時間)。この時間形式では、元のタイムスタンプより指定の時間だけ前にマーカーが置かれます。たとえば、-t start=@-20:00 は、現在時刻より 20 分前に開始マーカーを置きます。実験が少なくとも 20 分実行されていない場合、このマーカーは無視されます。

複数の -t 指定を 1 つの er_label コマンドに使用することも、複数の -t 指定を同じラベル名の別々のコマンドに使用することもできますが、-t start マーカーと -t stop マーカーのペアで指定するようにしてください。

-t start または -t stop オプションのあとに時間指定がない場合、指定は =@ と見なされます。マーカーの 1 つには時間指定を含める必要があります。

er_label の例

例 8-1 実験の開始を基準とする時刻マーカーを使用してラベルを定義する

実験の開始 15 秒後から 10 分間の実行部分をカバーする snap という名前のラベルを実験 test.1.er に定義するには、次のコマンドを使用します。

% er_label -o test.1.er -n snap -t start=15 -t stop=10:15

または、間隔のマーカーを個別のコマンドで指定することもできます。

% er_label -o test.1.er -n snap -t start=15
% er_label -o test.1.er -n snap -t stop=10:15

例 8-2 現在時刻を基準とする時刻マーカーを使用してラベルを定義する

5 分前から現在時刻までの実行部分をカバーする last5mins という名前のラベルを実験 test.1.er に定義するには、次のようにします。

% er_label -o test.1.er -n last5mins -t start=@-05:00 -t stop

スクリプトでの er_label の使用

er_label の使用方法の 1 つは、クライアントによって独立した 1 つ以上のプロセスとして駆動されるサーバープログラムのプロファイリングをサポートすることです。この使用モデルの場合、サーバーでの実験の作成を開始するため、collect コマンドを使ってサーバーを起動します。サーバーが起動され、クライアントの要求を受け入れる準備が整ったら、要求を発行してサーバーを駆動するとともに、er_label を実行してクライアント要求が発生する実験の部分にラベルを付けるようなクライアントスクリプトを実行できます。

次のサンプルクライアントスクリプトは、サーバーに対して実行された要求ごとに、test.1.er 実験に時刻ラベルを生成します。作成される 5 つのラベルはそれぞれ、指定された要求の処理に消費された時間をマークします。

for REQ in req1 req2 req3 req4 req5
          do

          echo "=========================================================="
          echo " $REQ started at `date`"

          er_label -o test.1.er -n $REQ -t start=@
          run_request $REQ
          er_label -o test.1.er -n $REQ -t stop=@
          done

次のサンプルスクリプトは、すべての要求を含む all という単一のラベルを生成する別の使用方法を示しています。

for REQ in req1 req2 req3 req4 req5
          do

          echo "=========================================================="
          echo " $REQ started at `date`"

          er_label -o test.1.er -n all -t start=@
          run_request $REQ
          er_label -o test.1.er -n all -t stop
          done

er_label の 2 番目の呼び出しでは、-t stop のあとに時間指定がないため、デフォルトで stop=@ となります。

より複雑なスクリプトを作成し、複数のスクリプトを同時に同じノードまたは異なるノードで実行できます。すべてのノードからアクセスできる共有ディレクトリに実験が置かれている場合、スクリプトは同じ実験に間隔をマークできます。各スクリプトのラベルは、同じ場合も異なる場合もあります。