インテル® VTune™ プロファイラー・ユーザーガイド

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

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

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

  2. お使いの Linux* システムのバージョン用のデバッグ情報パッケージをダウンロードしインストールしてください

  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

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

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

デバッグ・カーネル・バージョンのダウンロードとインストール

Linux* オペレーティング・システムをインストールした後、カーネルは vmlinuxvmlinuz または /bootbzImage に含まれます。通常、ベンダーはシンボルをストリップした圧縮カーネルファイル (vmlinuz または bzImage) を提供します。vmlinux は非圧縮カーネルですがデバッグ情報は含みません。そのため、デフォルトではインテル® VTune™ プロファイラーはこのカーネルからカーネル関数情報を取得できません。カーネル内で取得されたすべてのホットなアドレスの関数やモジュール名は [vmlinux] となります。しかし、いくつかのベンダーは、パフォーマンス解析に適したカーネルの特別なデバッグバージョンを提供しています。

  1. uname -r コマンドを使用して実行中のカーネルバーションを調べます。

  2. システムに対応する 2 つの RPM をダウンロードしてインストールします: kernel-debug-debuginfo-*.rpmkernel-debuginfo-common-*.rpm。これを行うには、次のいずれかのオプションを使用します。

    • インストール CD や DVD から RPM を検索します。例えば、SuSE Linux* Enterprise* 9、10、および 11 では、”debug” カーネル RPM (kernel-debug-*.rpm) は、インストール CD またはウェブサイトで提供されます。RPM のインストール後、デバッグバージョンのカーネルファイルは、/boot/vmlinux-*-debug または /boot/vmlinuz-*-debug に配置されます。gunzip を使用して手動でカーネルファイルを展開する必要があります。

    • OS ベンダーの FTP サイトなどから、パッケージをダウンロードします。例: Redhat* Enterprise Server のパッケージを取得するには、ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os を検索します。

    • インターネット上でほかの提供元も検索できます。例えば、Red Hat Enterprise* Linux* 3、4 および 5 では、http://people.redhat.com/duffy/debuginfo/ で debuginfo が提供されます。RPM のインストール後、デバッグバージョンのカーネルファイルは、/usr/lib/debug/boot (EL 3) または /usr/lib/debug/lib/modules (EL 4、5) に配置されます。

  3. 次のコマンドを使用して RPM をインストールします。

    rpm -ivh kernel-debuginfo-common-*.rpm
    rpm -ivh kernel-debug-debuginfo-*.rpm

    一部のオペレーティング・システムでは、yum を使用してパッケージを直接インストールできます。次に例を示します。

    yum --enablerepo=rhel-debuginfo install kernel-debuginfo
  4. パッケージがインストールされているか確認します。例:

    rpm -qa|grep kernel
  5. インテル® VTune™ プロファイラーのターゲット・プロパティーを変更し、ダイアログボックス: [バイナリー/シンボル検索] に圧縮されていないカーネルバイナリーへのパス (例: /usr/lib/debug/lib/modules/2.6.18-128.el5debug/) を追加します。

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

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

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

    CFLAGS_KERNEL := -g

    CFLAGS := -g

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

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

関連情報