インテル® VTune™ Amplifier 2018 ヘルプ
カーネルとシステム・ライブラリーのパフォーマンス解析を成功させるには、次の手順に従ってください。
お使いの Linux* システムのバージョン用のデバッグ情報パッケージをダウンロードして、インストールしてください。
Linux* カーネルのパフォーマンス特性の精度を高めるため、インテル® VTune™ Amplifier は /proc/kallsyms ファイルで提供されるカーネルモジュール情報を必要とします。そのため、/proc/sys/kernel/kptr_restrict ファイルに /proc/kallsyms の読み込みを許可する値が含まれ、カーネルポインターに非ゼロのアドレスが設定されていることを確認してください。
もし、kptr_restrict の値が 0 である場合、カーネルアドレスは制限なしで提供されます (推奨)。
もし、kptr_restict の値が 1 である場合、ユーザーが CAP_SYSLOG を有する場合にアドレスが提供されます。
もし、kptr_restrict の値が 2 である場合、ユーザーの特権レベルにかかわらずカーネルアドレスは隠匿されます。
詳細は、http://lwn.net/Articles/420403/ (英語)、http://man7.org/linux/man-pages/man7/capabilities.7.html (英語) をご覧ください。
カーネルポインター情報が、kptr_restrict を非ゼロに設定することで明示的に隠匿されている場合、ハードウェア・イベントベース・サンプリング解析の結果には、カーネルモジュールからの関数が含まれないかもしれません。その結果、CPU 時間に関連する項目は、[Outside any known module] として表示されます。現在のセッションでこの問題を解決するには、インテル® VTune™ Amplifier を開始する前に /proc/sys/kernel/kptr_restrict ファイルに 0 を設定します。
> sysctl -w kernel.kptr_restrict=0
Linux* カーネルのシンボルを解決するため、インテル® VTune™ Amplifier はカーネルビルドの際に作成され、システムとともに提供される System.map ファイルを使用します (デフォルト)。ファイルがデフォルト以外の場所に配置されている場合、ターゲットのプロパティーを設定する際に、[Binary/Symbol Search (バイナリー/シンボル検索)] ダイアログボックスで検索ディレクトリーのリストに追加する必要があります。
/proc/kallsyms と System.map ファイルを設定して、インテル® VTune™ Amplifier のカーネルシンボル解決を有効にし、カーネル関数とカーネルスタックを表示します (アセンブリー解析は利用できません)。
Linux* オペレーティング・システムのインストール後、カーネルは /boot 下の vmlinux、vmlinuz、または bzImage に含まれます。Linux* ベンダーは一般に、シンボルがストリップされた圧縮カーネルを提供しています (vmlinuz または bzImage)。vmlinux は、非圧縮の Linux* カーネルですが、デバッグ情報を含んでいません。そのため、デフォルトではインテル® VTune™ Amplifier はこのカーネルからカーネル関数情報を取得できません。カーネル内で取得されたすべてのホットなアドレスの関数やモジュール名は [vmlinux] として表示されます。しかし、いくつかのベンダーは、パフォーマンス解析に適したカーネルの特別なデバッグバージョンを提供しています。
Linux* カーネルのバージョンを確認するには、uname -r コマンドを使用します。
システムに対応する 2 つの RPM をダウンロードしてインストールします: kernel-debug-debuginfo-*.rpm と kernel-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 サイトなどから、パッケージをダウンロードします。例: Red Hat* Enterprise Server のパッケージを取得するには、ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os を検索します。
インターネット上でほかの提供元も検索できます。例えば、Red Hat* Enterprise* Linux* 3、4 および 5 では、debuginfo RPM が http://people.redhat.com/duffy/debuginfo/ (英語) で提供されています。RPM のインストール後、カーネルファイルのデバッグバージョンは、/usr/lib/debug/boot (EL 3) または、/usr/lib/debug/lib/modules (EL 4、5) に配置されます。
次のコマンドを使用して RPM をインストールします。
> rpm -ivh kernel-debuginfo-common-*.rpm
> rpm -ivh kernel-debug-debuginfo-*.rpm
いくつかのオペレーティング・システムでは、パッケージをインストールする際に yum を使用します。次に例を示します。
> yum --enablerepo=rhel-debuginfo install kernel-debuginfo
パッケージがインストールされているか確認します。次に例を示します。
> rpm -qa|grep kernel
インテル® VTune™ Amplifier のターゲット・プロパティーを変更し、[Binary/Symbol Search] ダイアログボックスで圧縮されていないカーネルバイナリーへのパスを指定します。例: /usr/lib/debug/lib/modules/2.6.18-128.el5debug/。
カーネルソースの最上位の Makefile を修正し、-g オプションを次の変数に追加します。
CFLAGS_KERNEL := -g
CFLAGS := -g
次に make clean を実行します。デバッグ情報付きで vmlinux カーネルを make します。デバッグバージョンのカーネルが作成または取得されたら、パフォーマンス解析中に使用するカーネルファイルを指定します。
カーネルモジュールのデバッグ情報が利用可能になると、すべての解析実行においてカーネル関数が適切に表示されます。新しいシンボル情報と収集したデータが一致していない場合、プロジェクトの [Search Directories (検索ディレクトリー)] を更新し、変更を適用するため [Re-resolve (再解決)] ボタンをクリックします。