Linux* カーネルの解析を有効にする

カーネルとシステム・ライブラリーのパフォーマンス解析を成功させるには、次の手順に従ってください。

  1. カーネルのモジュール解決を有効にします。

  2. デバッグ情報パッケージをダウンロードしてインストール (必要な場合

  3. デバッグ情報付きで Linux* カーネルをビルドします。

カーネルのモジュール解決を有効にする

Linux* カーネルのパフォーマンス特性の精度を高めるため、インテル® VTune™ プロファイラーは /proc/kallsyms ファイルで提供されるカーネルモジュール情報を必要とします。そのため、/proc/sys/kernel/kptr_restrict ファイルに /proc/kallsyms の読み込みを許可する値が含まれ、カーネルポインターに非ゼロが与えられていることを確認して下さい。

詳細は、http://lwn.net/Articles/420403/ (英語)、http://man7.org/linux/man-pages/man7/capabilities.7.html (英語) を参照してください。

kptr_restrict を非ゼロに設定してカーネルポインター情報が明示的に隠匿されている場合、ハードウェア・イベントベース解析の結果にカーネルモジュールからの関数が含まれない可能性があります。それらの関数の CPU 時間は、[既知のモジュール外] に関連付けられます。現在のセッションでこの問題を解決するには、インテル® VTune™ プロファイラーを開始する前に /proc/sys/kernel/kptr_restrict ファイルに 0 を設定します。

sysctl -w kernel.kptr_restrict=0

インテルのサンプリング・ドライバーを使用せずに perf 経由でカーネル プロファイリングを有効にするには、perf_event_paranoid 値を 1 以下に設定します。詳細については、Linux* カーネルのドキュメント (英語) を参照してください。

インテル® VTune™ プロファイラーは、Linux* カーネルのシンボルを解決するため、カーネルビルドの際に作成されシステムとともに提供される System.map ファイルを使用します (デフォルト)。ファイルがデフォルト以外の場所に配置されている場合、ターゲットのプロパティーを設定する際に、[バイナリー/シンボル検索] ダイアログボックスで検索ディレクトリーのリストに追加する必要があります。

/proc/kallsymsSystem.map ファイルの設定は、インテル® VTune™ プロファイラーのカーネルシンボル解決を有効にし、カーネル関数とカーネルスタックを表示しますが、アセンブリー解析は利用できません。

また、最近のディストリビューションでは、root ユーザーのみが System.map にアクセスできます。このファイルをインテル® VTune™ プロファイラーで使用できるようにするには、権限を変更します。

デバッグ・カーネル・バージョンのダウンロードとインストール (必要に応じて)

[アセンブラ/ソース] ペインでカーネルをドリルダウンする場合にのみ、カーネルデバッグ情報をインストールする必要があります。たとえば、カーネル関数内のホットスポットを確認する場合などです。

カーネルのデバッグ・シンボル・パッケージをインストールするには、次のリソースを参照してください。

その他のディストリビューションでカーネル・デバッグ・シンボルをインストールするには、ディストリビューションのドキュメントを参照してください。

デバッグ情報付きで Linux* カーネルをビルド

  1. カーネルのソースを設定します。

  2. カーネルソースの最上位の Makefile を編集し、次の変数に -g オプションを追加します。

    CFLAGS_KERNEL := -g

    CFLAGS := -g

  3. 次に make clean; make を実行して、デバッグ情報付きで vmlinux カーネルファイルを生成します。デバッグバージョンのカーネルが作成または取得されたら、パフォーマンス解析中に使用するカーネルファイルを指定します。

カーネルモジュールのデバッグ情報が利用可能になると、すべての解析実行においてカーネル関数が適切に表示されます。新しいシンボル情報と収集したデータが一致していない場合、プロジェクトの [検索ディレクトリー] を更新し、変更を適用するため [再解決] ボタンをクリックします。

関連情報