インテル® スレッドチェッカー  

よくある質問と回答 (FAQ)

Linux* リモートデータ収集

一般的なトピック

  1. リモートデータ収集とは何ですか?

  2. リモートデータ収集には何が必要ですか?


インテル® スレッドチェッカー固有の問題

  1.  インテル® スレッドチェッカーのリモートデータ収集はどのように行われますか?

  2. リモート作業中のアプリケーションはどうすれば停止できますか?

  3. スレッドチェッカーがハングした場合はどうすればいいですか?

  4. スレッドチェッカーのリモート・データ・コレクターが使用している信号のセットがアプリケーションの信号制御と競合しています。どうすれば解決できますか?

  5. Linux 側でスレッドチェッカーのリモート・データ・コレクターのファイルが一時的に格納される場所はどこですか?

  6. スレッドチェッカーのリモートデータ収集の継続期間を設定することはできますか?

  7. どうすれば環境変数の設定を Linux 上のアプリケーションに渡すことができますか?

  8. スレッドチェッカーで起動する Linux アプリケーションを指定しましたがアプリケーションが起動しません。なぜですか?

  9. root として ittserver を実行していますが、ittserver でファイルのアクセスに問題が発生しました。なぜですか?

  10. Linux バイナリーのソースビューを表示しようとすると、スレッドチェッカーでソースファイルの場所を確認するメッセージが表示されます。なぜですか?

  11.  スレッドチェッカーは複数の (異なる) アプリケーションのデータをリモートで同時に収集することができますか?

  12.  同じ Linux システム上の複数のユーザーが各自のスレッドチェッカーのリモートデータ収集セッションを同時に実行することはできますか?

  13. インテル® コンパイラーとその -tcheck スイッチに関する問題はどうすれば解決できますか?

  14. Explicit Program Database Mode (明示的プログラム・データベース・モード) ではどのようにインテル® スレッドチェッカーを使用すればいいですか?


著作権と商標について


 

一般的なトピック

1. リモートデータ収集とは何ですか?

リモートデータ収集には以下の機能があります。

VTune パフォーマンス環境を使用すると、リモート・エージェント・システム上でアプリケーションを起動してデータ収集を実行することができます。リモート・エージェント・システムには、VTune パフォーマンス環境製品ファイルのサブセットのみ必要です。異なるオペレーティング・システム上で動作している、複数のリモート・エージェント・システム上でデータ収集を実行することができます。

2. リモートデータ収集には何が必要ですか?

リモートデータ収集には、以下の 2 つのシステムが必要です。

これらのシステム上のコンポーネントの関係を次に示します。

               Windows <-+->   ittserver  <--->  collector1.so ... . . collectorN.so
               VTune(TM) |         サーバー                    データコレクター
      パフォーマンス環境の |
             クライアント |
                         |
         <-- Windows --> | <------------------ Linux ---------------------->

リモートデータ収集サーバー (ittserver) は、インテル® スレッドチェッカーとインテル® スレッド・プロファイラーの共有コンポーネントです。リモートデータ収集サーバーを起動する前に、Linux システムを正しく設定してください。設定方法については、製品の『リリースノート』を参照してください。

上記のリモートデータ収集処理は、以下の手順に従って行われます。 

  1.  起動時に、 ittserver はすべてのデータコレクターを初期化して、指定された IP ポート 50002 に関するリクエストのリッスンを開始します。

  2. Windows クライアントはサーバーへメッセージを送信して応答を待ちます。

  3. サーバーはリモートコレクターへそのメッセージをディスパッチした後、Windows クライアントからのリクエストのリッスンを続けます。

  4.  現在のアクティビティー実行が完了すると、コレクターはサーバーに通知します。次に、サーバーは Windows クライアントに通知します。リクエストがあった場合、サーバーは Windows クライアントにタスクからの結果データも送信します。Windows クライアントは解析用に結果データを表示します。

各コレクターにはそれぞれ要件があります。コレクターの要件が満たされていない場合、またはコレクターの初期化中にエラーが発生した場合でも、サーバーは動作を続けますが、コレクターへのアクセスは無効になります。

インテル® スレッドチェッカー固有の問題

1. インテル® スレッドチェッカーのリモートデータ収集はどのように行われますか?

スレッドチェッカーのリモートデータ収集は、以下の手順で行われます。

  1. Windows 上のスレッドチェッカーで、スレッドチェッカーのリモートデータ収集を実行する Linux アプリケーション、スレッドチェッカーのインストルメンテーション・レベル、およびその他の設定オプションを指定します。

  2. Windows 上のスレッドチェッカーは、Linux システム上で動作しているスレッドチェッカーのリモート・データ・コレクターへ情報を転送します。

  3.  スレッドチェッカーのリモート・データ・コレクターは、Linux システム上のアプリケーションとアプリケーションで使用されているすべてのライブラリーのインストルメンテーションを行います。インストルメンテーションでは、インストルメント済みアプリケーションである新しいバイナリーのセットを生成して、スレッドチェッカーのリモート・データ・コレクターのキャッシュ・ディレクトリーに配置します。

  4. インストルメント済みアプリケーションを実行します。その実行中に、スレッドチェッカーのデータが収集されます。

 正常に完了すると、スレッドチェッカーのリモートデータ収集中に生成されたデータが Windows 上のスレッドチェッカーに転送され、表示および解析することができます。

2. リモート作業中のアプリケーションはどうすれば停止できますか?

 Windows 上のスレッドチェッカーで、赤の停止ボタンをクリックします。

 アプリケーションが停止しない場合、コマンド kill -9 <PID> を使用して手動でアプリケーションのプロセスを停止します。

警告

データ収集を中断した場合、スレッドチェッカーでは完全なアクティビティー結果が表示されません。

3. インテル® スレッドチェッカーがハングした場合はどうすればいいですか?

 Windows ターミナルで、 ittserver が動作していた画面を表示します。ここで、Ctrl-S を押すか、マウスをクリックして別のモードを選択します。

 Ctrl-Q または ESC を押して、 ittserver が休止していないことを確認します。

ヒント

ittserver の出力を休止しないようにしてください。 出力を休止すると、通常の ittserver の出力に回復するまでアプリケーションがハングすることがあります。

4.スレッドチェッカーのリモート・データ・コレクターが使用している信号のセットがアプリケーションの信号制御と競合しています。どうすれば解決できますか?

実行中のアプリケーションを停止する方法の 1 つは、アプリケーションのプロセスに特別な信号を送信する方法です。 デフォルトの信号は SIGUSR2 ですが、この信号がアプリケーションで既に使用されている場合、__Bistro_Exit_Signal__ 環境変数に別の信号番号を指定します。信号番号は、<bits/signum.h> 標準ヘッダーファイルに記述されています。

5. Linux 側でスレッドチェッカーのリモート・データ・コレクターのファイルが一時的に格納される場所はどこですか?

以下の 2 つの異なるディレクトリーが Linux システムで一時データを格納する場所として使用されます。

  1. スレッドチェッカーのリモート・データ・コレクターのキャッシュ・ディレクトリー。デフォルトの場所は /tmp/tc_<windows_login>_cache です。
    Windows 上のスレッドチェッカーで、[Configure (設定)] - [Options (オプション)] - [Intel® Thread Checker] - [Collector (コレクター)] - [Cache Directories (キャッシュ・ディレクトリー)] を選択してデフォルトのディレクトリーを変更することができます。

  2.  ittserver データ・ディレクトリー。デフォルトの場所は <現在のディレクトリー>/.bistro_server および <現在のディレクトリー>/.bistro_temp です。

注意

どちらのディレクトリーも書き込み可能でなければなりません。

6. スレッドチェッカーのリモートデータ収集の継続期間を設定することはできますか?

いいえ。現在、スレッドチェッカーのリモート・データ・コレクターは継続期間設定を無視します。

7. どうすれば環境変数の設定を Linux 上のアプリケーションに渡すことができますか?

以下のいずれかの方法で環境変数をアプリケーションに渡すことができます。

ittserver の起動前

  1. アプリケーションで必要な環境変数を設定します。

  2. ittserver を起動します。

アプリケーションの起動前

  1. Windows 上のスレッドチェッカーで、[Advanced Activity Configuration (詳細アクティビティー設定)] ダイアログボックスを開いて、[Application/Module Profiles (アプリケーション/モジュール・プロファイル)] でアプリケーションを選択し、[Configure (設定)] をクリックします。[General (全般)] ダイアログが表示されます。

  2. [Advanced (詳細)] をクリックして、[Use default environment (デフォルト環境を使用)] の選択を解除し、"VARIABLE=value" 形式で環境変数を入力します (例: "FOO=3")。

  3. [OK] をクリックして設定を保存します。

シェルスクリプトの作成

  1. 変数を設定してアプリケーションを実行するシェルスクリプトを作成します。

  2. Windows 上のスレッドチェッカーで、起動するアプリケーションにシェルスクリプトを指定してアクティビティーを設定し、対象モジュールに実行ファイルの名前を定義します。

注意

LD_LIBRARY_PATHLD_ASSUME_KERNEL のようなダイナミックにリンクされたライブラリーのデフォルトパスを変更する環境変数を設定する場合、ittserver を起動する前に設定する必要があります。

8. スレッドチェッカーで起動する Linux アプリケーションを指定しましたがアプリケーションが起動しません。なぜですか?

以下の条件が満たされていることを確認してください。

9. root として ittserver を実行していますが、ittserver でファイルのアクセスに問題が発生しました。なぜですか?

ファイルがネットワーク接続されたファイルシステム (例: NFS*、AFS*、または Samba*) 上にある場合、それらのファイルまたはそれらのファイルを含むディレクトリーへの root アクセスに制限がある場合があります。詳細は、システム管理者に確認してください。

注意

ittserverroot 以外の ユーザーとして実行することを強く推奨します。複数のユーザーが ittserver を使用する必要がある場合、それらのユーザーを特別なグループに追加して、そのグループのメンバーが関連ファイルとディレクトリーにアクセスできることを確認してください。そして、グループの root 以外のメンバーの 1 人として ittserver を実行してください。

10. Linux バイナリーのソースビューを表示しようとすると、ソースファイルの場所を確認するメッセージが表示されます。なぜですか?

現在、スレッドチェッカーのデータとソースの一致は Windows 上のスレッドチェッカーで行われています。Linux ソースファイルへの参照が行われていると、スレッドチェッカーはファイルを検索する場所を確認します。以下のいずれかの方法でファイルを検索してください。

一旦スレッドチェッカーのデータとソースが一致すると、ツールはソースの場所をキャッシュに保存します。次回以降、同じソースを使用する際は、キャッシュに保存された場所が使用されます。バイナリーが変更されたことが検出された場合、またはキャッシュされたバイナリーのソースの場所がクリアされた場合、スレッドチェッカーは再度ファイルを検索する場所を確認します。

注意

ソースの場所のキャッシュは、Windows 上の VTune 環境の [Configure (設定)] - [Options (オプション)] - [Directories (ディレクトリー)] - [File Association (ファイルの関連付け)] ダイアログボックスでクリアすることができます。

11. スレッドチェッカーは複数の (異なる) アプリケーションのデータをリモートで同時に収集することができますか?

いいえ。現在、スレッドチェッカーのリモートデータ収集セッションで処理できるアプリケーションは 1 つのみです。この単一アプリケーションは、[Application/Module Profile Configuration (アプリケーション/モジュール・プロファイル設定)] ダイアログボックスの対象モジュールフィールドのアプリケーション内部で指定する必要があります。

12. 同じ Linux システム上の複数のユーザーが各自のスレッドチェッカーのリモートデータ収集セッションを同時に実行することはできますか?

いいえ。現在、同じ Linux システム上の複数のユーザーがスレッドチェッカーのリモートデータ収集を同時に実行することはできません。ユーザーはスレッドチェッカーのリモートデータ収集セッションが同じ Linux システム上で異なる (重ならない) 時間に実行されるように調整しなければなりません。

13. インテル® コンパイラーとその -tcheck スイッチに関する問題はどうすれば解決できますか?

インテル® コンパイラーの -tcheck スイッチの使用に関する既知の問題と推奨する解決方法を次に示します。

  1. -tcheck スイッチを使用してビルドしたところ、コンパイルのリンク段階で "Undefined reference to local symbols in discarded section .gnu.linkonce.t" のようなメッセージが表示された。

    このリンクの失敗を解決するには、リリースノートで推奨されているインテル® コンパイラー・パッケージをインストールして、リンカースイッチ -ltcdata を使用します。このスイッチは、Implicit Program Database Mode (暗黙的プログラム・データベース・モード) (デフォルト) のすべての情報を結合するために、ビルドにリンカースクリプトを追加します。その結果、オブジェクト・ファイルからのすべての情報が最終的な実行ファイルまたはライブラリーで利用可能になります。
    % icc -tcheck foo.c -ltcdata

  2. -tcheck スイッチを使用してアプリケーションをコンパイルし、インストルメント済みアプリケーションを実行できるが、スレッドチェッカーを使用して Windows 上でアクティビティー結果ファイルを表示したときにシンボリック情報が表示されない。
    コンパイル済みコードでインライン・アセンブラーが使用されていることが問題である可能性があります。このインライン・アセンブラーはシステムヘッダーまたはアプリケーションのソースコードで使用されます。
    GNU* gcc ライブラリー互換モードが有効な場合、システム・ヘッダー・ファイルにインライン・アセンブリー・コードが含まれます。モードを無効にするには、インテル® コンパイラーのライブラリー互換モードを以下のように変更します。

    % icc -ccxlib-icc -tcheck foo.c -ltcdata

    モードを変更した後も Windows システムのスレッドチェッカーの診断ビューに行番号と関数名が表示されない場合、まだインライン・アセンブラーが使用されています。インライン・アセンブリー・コードの前でシンボリック情報を取得するには、以下のいずれかの方法を使用してください。

    o        ソース・インストルメンテーションからバイナリー・インストルメンテーションに変更する。

    o        デフォルトの Implicit Program Database Mode (暗黙的プログラム・データベース・モード)Explicit Program Database Mode (明示的プログラム・データベース・モード) に変更する。

  3. -tcheck スイッチを使用してアプリケーションをコンパイルすることはできるが、"relocation truncated to fit: PCREL21B" のようなエラーメッセージが表示されてリンクに失敗する。

    この問題は、インストルメント済みオブジェクト・ファイルがシステムの制限 (通常 16MB) よりも大きい場合に発生します。この制限を回避するには、Explicit Program Database Mode (明示的プログラム・データベース・モード) に変更してください。このモードでは、シンボリック情報は別の外部データベース・ディレクトリーに格納され、オブジェクト・ファイルのサイズ制限の対象となりません。

14. Explicit Program Database Mode (明示的プログラム・データベース・モード) ではどのようにインテル® スレッドチェッカーを使用すればいいですか?

Explicit Program Database Mode (明示的プログラム・データベース・モード) を使用してアプリケーションを解析するには、以下のように操作してください。

注意

以下の例はすべてインテル® C++ コンパイラー Linux 版向けですが、このモードはインテル® Fortran コンパイラー Linux 版でも使用することができます。

  1. tcheck_pname=<データベースのディレクトリー名> スイッチを使用してアプリケーションをコンパイルします。

    icc -c example.c -tcheck_pname=/home/user/work/db

    コンパイラーは、データベースとプログラムのシンボル情報を含むディレクトリー db.prj を作成します。.prj 接尾辞は自動的に追加されます。プロジェクト・ディレクトリーはフルパスで指定してください。フルパスで指定することで、ビルドスクリプトが現在のディレクトリーを変更した場合でもすべてのプロジェクト・データが同じデータベースに残ります。

  2. -tcheck スイッチを使用してアプリケーションをリンクします。
    icc example.o -tcheck  

  3. プログラムが 1 ステップでコンパイルおよびリンクされている場合、両方のスイッチを指定する必要があります。例: icc example.c -tcheck_pname=/home/user/work/db -o example

  4.  Linux マシンでアプリケーションを実行します。結果は、データベース・ディレクトリーと同じ名前で、拡張子が .thr のファイルに出力されます。上記の例では、結果は db.thr に出力されます。
    環境変数 TC_OPTIONS を使用して名前を変更することができます。

  5. ソースコードとコンパイル、リンク、実行の結果がスレッドチェッカーのクライアント・アプリケーションで利用可能なことを確認してください。ファイルは、ネットワーク・マウント可能なディスク上に作成するか、クライアント・マシンにコピーすることができます。

  6.  クライアント・マシンでスレッドチェッカーを実行する前に、環境変数 ITT_SHOW_BACKUP_DATABASE=T を設定する必要があります。変数は、(DOS シェルではなく) コントロール・パネルから設定してください。

  7. クライアント・マシンでスレッドチェッカーを実行します。[File (ファイル)] メニューから、[Open File (ファイルを開く)] を選択します。

  8. スレッドチェッカーの出力ファイルを選択します (上記の例では db.thr)。

  9. [Supply Information for Imported THR file (インポートした THR ファイルの情報の提供)] ダイアログボックスが表示されます。

  10. [Use program database directory (プログラム・データベース・ディレクトリーを使用)] のチェックをオンにして、データベース・ディレクトリーの場所を指定します (上記の例では db.prj)。

  11. スレッドチェッカーが、プログラム実行の診断結果を表示します。スレッドチェッカーが実行に使用されたソースファイルを見つけられなかった場合、クライアント・マシンからアクセスできるディレクトリーに各ファイルの場所を指定する必要があります (ネットワーク・マウントされた、またはファイルがコピーされた場所のいずれか)。


著作権と商標について

本資料およびこれに記載されているソフトウェアはライセンス契約に基づいて提供されるものであり、その使用および複製はライセンス契約で定められた条件下でのみ許可されます。 本資料で提供される情報は、情報供与のみを目的としたものであり、予告なく変更されることがあります。また、本資料で提供される情報は、インテルによる確約と解釈されるべきものではありません。インテルは本資料の内容およびこれに関連して提供されるソフトウェアにエラー、誤り、不正確な点が含まれていたとしても一切責任を負いません。

機能または命令の一覧で「留保」または「未定義」と記されているものがありますが、その「機能が存在しない」あるいは「性質が留保付である」という状態を設計の前提にしないでください。これらの項目は、インテルが将来のために留保しているものです。インテルが将来これらの項目を定義したことにより、衝突が生じたり互換性が失われたりしても、インテルは一切責任を負いません。

Intel、インテル、Intel ロゴ、VTune は、アメリカ合衆国およびその他の国における Intel Corporation の商標です。

© 2007 Intel Corporation. 無断での引用、転載を禁じます。

* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。