リモートデータ収集には以下の機能があります。
1 台のマシン (リモート・エージェント・システム) でデータを収集する
別のマシン (制御システム) でデータの収集を設定し表示する
VTune™ パフォーマンス環境を使用すると、リモート・エージェント・システム上でアプリケーションを起動してデータ収集を実行することができます。リモート・エージェント・システムには、VTune™ パフォーマンス環境製品ファイルのサブセットのみ必要です。異なるオペレーティング・システム上で動作している、複数のリモート・エージェント・システム上でデータ収集を実行することができます。
リモートデータ収集には、以下の 2 つのシステムが必要です。
クライアント ・システム。Microsoft* Windows* オペレーティング・システム上で動作します。アクティビティーの設定と管理、データ収集結果の表示を行います。
サーバー システム。Linux オペレーティング・システム上でリモート・エージェントを実行します。リモート・データ・コレクターを制御してクライアント・システムに結果を送信します。
これらのシステム上のコンポーネントの関係を次に示します。
Windows <-+-> ittserver <---> collector1.so ... . . collectorN.so
VTune(TM) | サーバー データコレクター
パフォーマンス環境の |
クライアント |
|
<-- Windows --> | <------------------ Linux ---------------------->
リモートデータ収集サーバー (ittserver
) は、インテル® スレッドチェッカーとインテル® スレッド・プロファイラーの共有コンポーネントです。リモートデータ収集サーバーを起動する前に、Linux システムを正しく設定してください。設定方法については、製品の『リリースノート』を参照してください。
上記のリモートデータ収集処理は、以下の手順に従って行われます。
起動時に、
ittserver
はすべてのデータコレクターを初期化して、指定された IP ポート 50002 に関するリクエストのリッスンを開始します。
Windows クライアントはサーバーへメッセージを送信して応答を待ちます。
サーバーはリモートコレクターへそのメッセージをディスパッチした後、Windows クライアントからのリクエストのリッスンを続けます。
現在のアクティビティー実行が完了すると、コレクターはサーバーに通知します。次に、サーバーは Windows クライアントに通知します。リクエストがあった場合、サーバーは Windows クライアントにタスクからの結果データも送信します。Windows クライアントは解析用に結果データを表示します。
各コレクターにはそれぞれ要件があります。コレクターの要件が満たされていない場合、またはコレクターの初期化中にエラーが発生した場合でも、サーバーは動作を続けますが、コレクターへのアクセスは無効になります。
スレッドチェッカーのリモートデータ収集は、以下の手順で行われます。
Windows 上のスレッドチェッカーで、スレッドチェッカーのリモートデータ収集を実行する Linux アプリケーション、スレッドチェッカーのインストルメンテーション・レベル、およびその他の設定オプションを指定します。
Windows 上のスレッドチェッカーは、Linux システム上で動作しているスレッドチェッカーのリモート・データ・コレクターへ情報を転送します。
スレッドチェッカーのリモート・データ・コレクターは、Linux システム上のアプリケーションとアプリケーションで使用されているすべてのライブラリーのインストルメンテーションを行います。インストルメンテーションでは、インストルメント済みアプリケーションである新しいバイナリーのセットを生成して、スレッドチェッカーのリモート・データ・コレクターのキャッシュ・ディレクトリーに配置します。
インストルメント済みアプリケーションを実行します。その実行中に、スレッドチェッカーのデータが収集されます。
正常に完了すると、スレッドチェッカーのリモートデータ収集中に生成されたデータが Windows 上のスレッドチェッカーに転送され、表示および解析することができます。
Windows 上のスレッドチェッカーで、赤の停止ボタンをクリックします。
アプリケーションが停止しない場合、コマンド kill -9 <PID>
を使用して手動でアプリケーションのプロセスを停止します。
警告
データ収集を中断した場合、スレッドチェッカーでは完全なアクティビティー結果が表示されません。
Windows ターミナルで、 ittserver
が動作していた画面を表示します。ここで、Ctrl-S を押すか、マウスをクリックして別のモードを選択します。
Ctrl-Q または ESC を押して、 ittserver
が休止していないことを確認します。
ヒント
ittserver
の出力を休止しないようにしてください。 出力を休止すると、通常の ittserver
の出力に回復するまでアプリケーションがハングすることがあります。
実行中のアプリケーションを停止する方法の 1 つは、アプリケーションのプロセスに特別な信号を送信する方法です。 デフォルトの信号は SIGUSR2 ですが、この信号がアプリケーションで既に使用されている場合、__Bistro_Exit_Signal__ 環境変数に別の信号番号を指定します。信号番号は、<bits/signum.h> 標準ヘッダーファイルに記述されています。
以下の 2 つの異なるディレクトリーが Linux システムで一時データを格納する場所として使用されます。
スレッドチェッカーのリモート・データ・コレクターのキャッシュ・ディレクトリー。デフォルトの場所は
/tmp/tc_<windows_login>_cache
です。
Windows 上のスレッドチェッカーで、[Configure (設定)] - [Options (オプション)] - [Intel® Thread Checker] - [Collector (コレクター)] - [Cache Directories (キャッシュ・ディレクトリー)] を選択してデフォルトのディレクトリーを変更することができます。
ittserver
データ・ディレクトリー。デフォルトの場所は
<現在のディレクトリー>/.bistro_server
および <現在のディレクトリー>/.bistro_temp
です。
注意
どちらのディレクトリーも書き込み可能でなければなりません。
いいえ。現在、スレッドチェッカーのリモート・データ・コレクターは継続期間設定を無視します。
以下のいずれかの方法で環境変数をアプリケーションに渡すことができます。
ittserver
の起動前
アプリケーションで必要な環境変数を設定します。
ittserver
を起動します。
アプリケーションの起動前
Windows 上のスレッドチェッカーで、[Advanced Activity Configuration (詳細アクティビティー設定)] ダイアログボックスを開いて、[Application/Module Profiles (アプリケーション/モジュール・プロファイル)] でアプリケーションを選択し、[Configure (設定)] をクリックします。[General (全般)] ダイアログが表示されます。
[Advanced (詳細)] をクリックして、[Use default environment (デフォルト環境を使用)] の選択を解除し、"VARIABLE=value" 形式で環境変数を入力します (例: "FOO=3")。
[OK] をクリックして設定を保存します。
シェルスクリプトの作成
変数を設定してアプリケーションを実行するシェルスクリプトを作成します。
Windows 上のスレッドチェッカーで、起動するアプリケーションにシェルスクリプトを指定してアクティビティーを設定し、対象モジュールに実行ファイルの名前を定義します。
注意
LD_LIBRARY_PATH
や LD_ASSUME_KERNEL
のようなダイナミックにリンクされたライブラリーのデフォルトパスを変更する環境変数を設定する場合、ittserver
を起動する前に設定する必要があります。
以下の条件が満たされていることを確認してください。
アプリケーションは
ittserver
を起動したユーザーがアクセス可能な場所にある。
アプリケーションは
ittserver
を起動したユーザーによって実行可能である。
アプリケーションはインタラクティブなユーザー入力が必要なコマンドライン・アプリケーションではない。
ittserver
を実行していますが、ittserver
でファイルのアクセスに問題が発生しました。なぜですか?ファイルがネットワーク接続されたファイルシステム (例: NFS*、AFS*、または Samba*) 上にある場合、それらのファイルまたはそれらのファイルを含むディレクトリーへの root アクセスに制限がある場合があります。詳細は、システム管理者に確認してください。
注意
ittserver
を root 以外の ユーザーとして実行することを強く推奨します。複数のユーザーが ittserver
を使用する必要がある場合、それらのユーザーを特別なグループに追加して、そのグループのメンバーが関連ファイルとディレクトリーにアクセスできることを確認してください。そして、グループの root 以外のメンバーの 1 人として ittserver
を実行してください。
現在、スレッドチェッカーのデータとソースの一致は Windows 上のスレッドチェッカーで行われています。Linux ソースファイルへの参照が行われていると、スレッドチェッカーはファイルを検索する場所を確認します。以下のいずれかの方法でファイルを検索してください。
Linux から Windows に手動でコピーする。ファイルの場所は Windows のファイル名規則に従う必要があります (例:
DRIVE:\path\to\sourceFile
)。
NFS、AFS、Samba、その他を使用してリモート Linux ファイルシステムをエクスポートする。ファイルの場所は Windows のファイル名規則に従う必要があります (例:
\\linuxMachineName\path\to\sourceFile
)。DRIVE: <letter>
または DRIVE:\path\to\sourceFile
にマップしていない場合、システム管理者に問い合わせてください。
一旦スレッドチェッカーのデータとソースが一致すると、ツールはソースの場所をキャッシュに保存します。次回以降、同じソースを使用する際は、キャッシュに保存された場所が使用されます。バイナリーが変更されたことが検出された場合、またはキャッシュされたバイナリーのソースの場所がクリアされた場合、スレッドチェッカーは再度ファイルを検索する場所を確認します。
注意
ソースの場所のキャッシュは、Windows 上の VTune™ 環境の [Configure (設定)] - [Options (オプション)] - [Directories (ディレクトリー)] - [File Association (ファイルの関連付け)] ダイアログボックスでクリアすることができます。
いいえ。現在、スレッドチェッカーのリモートデータ収集セッションで処理できるアプリケーションは 1 つのみです。この単一アプリケーションは、[Application/Module Profile Configuration (アプリケーション/モジュール・プロファイル設定)] ダイアログボックスの対象モジュールフィールドのアプリケーション内部で指定する必要があります。
いいえ。現在、同じ Linux システム上の複数のユーザーがスレッドチェッカーのリモートデータ収集を同時に実行することはできません。ユーザーはスレッドチェッカーのリモートデータ収集セッションが同じ Linux システム上で異なる (重ならない) 時間に実行されるように調整しなければなりません。
-tcheck
スイッチに関する問題はどうすれば解決できますか?インテル® コンパイラーの -tcheck スイッチの使用に関する既知の問題と推奨する解決方法を次に示します。
-tcheck
スイッチを使用してビルドしたところ、コンパイルのリンク段階で "Undefined reference to local symbols in discarded section .gnu.linkonce.t" のようなメッセージが表示された。
このリンクの失敗を解決するには、リリースノートで推奨されているインテル® コンパイラー・パッケージをインストールして、リンカースイッチ -ltcdata
を使用します。このスイッチは、Implicit Program Database Mode (暗黙的プログラム・データベース・モード) (デフォルト) のすべての情報を結合するために、ビルドにリンカースクリプトを追加します。その結果、オブジェクト・ファイルからのすべての情報が最終的な実行ファイルまたはライブラリーで利用可能になります。
% icc -tcheck foo.c -ltcdata
-tcheck
スイッチを使用してアプリケーションをコンパイルし、インストルメント済みアプリケーションを実行できるが、スレッドチェッカーを使用して Windows 上でアクティビティー結果ファイルを表示したときにシンボリック情報が表示されない。
コンパイル済みコードでインライン・アセンブラーが使用されていることが問題である可能性があります。このインライン・アセンブラーはシステムヘッダーまたはアプリケーションのソースコードで使用されます。
GNU* gcc ライブラリー互換モードが有効な場合、システム・ヘッダー・ファイルにインライン・アセンブリー・コードが含まれます。モードを無効にするには、インテル® コンパイラーのライブラリー互換モードを以下のように変更します。
% icc -ccxlib-icc -tcheck foo.c -ltcdata
モードを変更した後も Windows システムのスレッドチェッカーの診断ビューに行番号と関数名が表示されない場合、まだインライン・アセンブラーが使用されています。インライン・アセンブリー・コードの前でシンボリック情報を取得するには、以下のいずれかの方法を使用してください。
o ソース・インストルメンテーションからバイナリー・インストルメンテーションに変更する。
o デフォルトの Implicit Program Database Mode (暗黙的プログラム・データベース・モード) を Explicit Program Database Mode (明示的プログラム・データベース・モード) に変更する。
-tcheck
スイッチを使用してアプリケーションをコンパイルすることはできるが、"relocation truncated to fit: PCREL21B" のようなエラーメッセージが表示されてリンクに失敗する。
この問題は、インストルメント済みオブジェクト・ファイルがシステムの制限 (通常 16MB) よりも大きい場合に発生します。この制限を回避するには、Explicit Program Database Mode (明示的プログラム・データベース・モード) に変更してください。このモードでは、シンボリック情報は別の外部データベース・ディレクトリーに格納され、オブジェクト・ファイルのサイズ制限の対象となりません。
Explicit Program Database Mode (明示的プログラム・データベース・モード) を使用してアプリケーションを解析するには、以下のように操作してください。
注意
以下の例はすべてインテル® C++ コンパイラー Linux 版向けですが、このモードはインテル® Fortran コンパイラー Linux 版でも使用することができます。
tcheck_pname=
<データベースのディレクトリー名> スイッチを使用してアプリケーションをコンパイルします。
icc
-c example.c -tcheck_pname=/home/user/work/db
コンパイラーは、データベースとプログラムのシンボル情報を含むディレクトリー db.prj
を作成します。.prj 接尾辞は自動的に追加されます。プロジェクト・ディレクトリーはフルパスで指定してください。フルパスで指定することで、ビルドスクリプトが現在のディレクトリーを変更した場合でもすべてのプロジェクト・データが同じデータベースに残ります。
-tcheck スイッチを使用してアプリケーションをリンクします。
icc
example.o -tcheck
プログラムが 1 ステップでコンパイルおよびリンクされている場合、両方のスイッチを指定する必要があります。例: icc
example.c -tcheck_pname=/home/user/work/db -o
example
Linux マシンでアプリケーションを実行します。結果は、データベース・ディレクトリーと同じ名前で、拡張子が .thr のファイルに出力されます。上記の例では、結果は db.thr に出力されます。
環境変数 TC_OPTIONS を使用して名前を変更することができます。
ソースコードとコンパイル、リンク、実行の結果がスレッドチェッカーのクライアント・アプリケーションで利用可能なことを確認してください。ファイルは、ネットワーク・マウント可能なディスク上に作成するか、クライアント・マシンにコピーすることができます。
クライアント・マシンでスレッドチェッカーを実行する前に、環境変数 ITT_SHOW_BACKUP_DATABASE=T を設定する必要があります。変数は、(DOS シェルではなく) コントロール・パネルから設定してください。
クライアント・マシンでスレッドチェッカーを実行します。[File (ファイル)] メニューから、[Open File (ファイルを開く)] を選択します。
スレッドチェッカーの出力ファイルを選択します (上記の例では db.thr)。
[Supply Information for Imported THR file (インポートした THR ファイルの情報の提供)] ダイアログボックスが表示されます。
[Use program database directory (プログラム・データベース・ディレクトリーを使用)] のチェックをオンにして、データベース・ディレクトリーの場所を指定します (上記の例では db.prj)。
スレッドチェッカーが、プログラム実行の診断結果を表示します。スレッドチェッカーが実行に使用されたソースファイルを見つけられなかった場合、クライアント・マシンからアクセスできるディレクトリーに各ファイルの場所を指定する必要があります (ネットワーク・マウントされた、またはファイルがコピーされた場所のいずれか)。
本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスを許諾するためのものではありません。製品に付属の売買契約書『Intel's Terms and Conditions of Sale』に規定されている場合を除き、インテルはいかなる責を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証(特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的所有権を侵害していないことへの保証を含む)にも一切応じないものとします。 インテルの製品は、医療、救命、延命措置などの目的への使用を前提としたものではありません。
本資料およびこれに記載されているソフトウェアはライセンス契約に基づいて提供されるものであり、その使用および複製はライセンス契約で定められた条件下でのみ許可されます。 本資料で提供される情報は、情報供与のみを目的としたものであり、予告なく変更されることがあります。また、本資料で提供される情報は、インテルによる確約と解釈されるべきものではありません。インテルは本資料の内容およびこれに関連して提供されるソフトウェアにエラー、誤り、不正確な点が含まれていたとしても一切責任を負いません。
機能または命令の一覧で「留保」または「未定義」と記されているものがありますが、その「機能が存在しない」あるいは「性質が留保付である」という状態を設計の前提にしないでください。これらの項目は、インテルが将来のために留保しているものです。インテルが将来これらの項目を定義したことにより、衝突が生じたり互換性が失われたりしても、インテルは一切責任を負いません。
Intel、インテル、Intel ロゴ、VTune は、アメリカ合衆国およびその他の国における Intel Corporation の商標です。
© 2007 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。