CentOS* 上の GPU 解析向けに i915 モジュールをリビルドしてインストール

CentOS* 7 のプロファイル・サポートは非推奨であり、将来のリリースで打ち切られる可能性があります。

GPU 利用率の解析に必要な i915 Ftrace* イベントを収集するには、Linux* カーネルが適切に設定されている必要があります。インテル® VTune™ プロファイラーが解析を開始できず、エラーメッセージが表示される場合。GPU 使用イベントの収集を有効にできません。i915 ftrace イベントは使用できません。再設定された i915 モジュールをリビルドしてインストールします。例えば、カーネル 4.14 以降の場合次のように設定します:CONFIG_EXPERT=y CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS=y

カーネルを頻繁に更新する場合、GPU 解析用の特殊カーネルをビルドします。

カーネルのインストールには root 権限が必要です。

CentOS* では、カーネルをほとんど更新することがない場合、次のように i915 モジュールのみを設定してリビルドしてください。

  1. ビルドの依存関係を解決します。

    sudo yum install flex bison elfutils-libelf-devel

  2. カーネルソースのフォルダーを作成します。

    mkdir -p /tmp/kernel
    cd !$

  3. カーネルのバージョンを取得します。

    uname -r

    例えば、次のような出力が得られます。

    4.18.0-80.11.2.el8_0.x86_64

  4. カーネルのソースコードを取得します。

    wget http://vault.centos.org/8.0.1905/BaseOS/Source/SPackages/kernel-4.18.0-80.11.2.el8_0.src.rpm

    rpm --define "_topdir /tmp/kernel/rpmbuild" -i kernel-4.18.0-80.11.2.el8_0.src.rpm

    tar -xf ./rpmbuild/SOURCES/linux-4.18.0-80.11.2.el8_0.tar.xz

  5. カレント・ディレクトリーを変更します。

    cd linux-*

  6. カーネルモジュールを設定します。

    cp /usr/src/kernels/$(uname -r)/.config ./

    cp /usr/src/kernels/$(uname -r)/Module.symvers ./

  7. カレント・ディレクトリーの Makefile のバージョンを変更します。

    設定するバ―ションの値は、uname -r コマンドで表示される値と同一でなければなりません。例えば、uname -r が 4.18.0-80.11.2.el8_0.x86_64 を出力する場合、Makefile の値は以下のようにします。

    VERSION = 4

    PATCHLEVEL = 18

    SUBLEVEL = 0

    EXTRAVERSION = -80.11.2.el8_0.x86_64

    必要に応じてファイルを更新して保存します。

  8. カーネルのバージョンが Makefile に設定されていることを再確認してください。

    make kernelversion

    上記のコマンドは以下を出力します。

    4.18.0-80.11.2.el8_0.x86_64

  9. 新たに.configファイルを作成する場合、次の設定が有効であることを確認してください:

    CONFIG_EXPERT=y

    CONFIG_FTRACE=y

    CONFIG_DEBUG_FS=y

    CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS=y

    必要に応じてファイルを更新して保存します。

  10. カーネルの完全なconfigファイルを作成します。

    make olddefconfig

  11. i915 モジュールをビルドします。

    make -j$(getconf _NPROCESSORS_ONLN) modules_prepare

    make -j$(getconf _NPROCESSORS_ONLN) M=./drivers/gpu/drm/i915 modules

    次のようなエラーが発生することがあります。

    LD [M] drivers/gpu/drm/i915/i915.o
    ld: no input files

    その場合、scripts/Makefile.build の次の行を変更する必要があります。

    link_multi_deps = \
    $(filter $(addprefix $(obj)/, \
    $($(subst $(obj)/,,$(@:.o=-objs)) \
    $($(subst $(obj)/,,$(@:.o=-y))) \
    $($(subst $(obj)/,,$(@:.o=-m)))),$^)

    上記の以下の行を変更します。

    link_multi_deps = $(filter %.o,$^)

    詳細については、https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=69ea912fda74a673d330d23595385e5b73e3a2b9 (英語) のパッチ情報を参照してください。

  12. 新しいモジュールをインストールします。

    sudo make M=./drivers/gpu/drm/i915 modules_install

  13. 新しいドライバーが格納されるフォルダーが /etc/depmod.d/* ファイルにあることを確認するか、追加してください。

    echo "search extradrivers" | sudo tee /etc/depmod.d/00-extra.conf

  14. initramfs を更新します。

    sudo depmod 
    sudo dracut --force

  15. マシンを再起動します。

    sudo reboot

  16. 新しいドライバーがロードされていることを確認します。

    modinfo i915 | grep filename

    コマンドの出力は以下のようになります。

    filename: /lib/modules/4.18.0-80.11.2.el8_0.x86_64/extradrivers/gpu/drm/i915/i915.ko

変更をロールバックして元の i915 モジュールに戻すには、次の操作を行います。

  1. /etc/depmod.d/* ファイルから新しいドライバーがあるフォルダー名を削除します。

    sudo rm /etc/depmod.d/00-extra.conf

  2. initramfs を更新します。

    sudo depmod
    sudo update-initramfs -u

  3. マシンを再起動します。

    sudo reboot

関連情報
インテル® HD グラフィックスとインテル® Iris® グラフィックス上の GPU アプリケーション解析