29.5.3. モジュールでの詳細な出力の取得
OProfile は、マシンで実行しているカーネルおよびユーザー空間コードについてシステム全体のデータを収集します。ただし、モジュールがカーネルに読み込まれると、カーネルモジュールの元の情報が失われます。モジュールは、起動時に
initrd
ファイルから、さまざまなカーネルモジュールを含むディレクトリー、またはローカルに作成されたカーネルモジュールから送られる場合があります。その結果、OProfile がモジュールのサンプルを記録すると、root ディレクトリーで実行可能なモジュールのサンプルのみが一覧表示されますが、これはモジュールの実際のコードで配置される訳ではありません。分析ツールが実行ファイルを取得できるようにするには、いくつかの手順を実行する必要があります。
モジュールのアクションをより詳細に表示するには、モジュール「トリップ解除」(カスタムビルドからインストールされる)か、カーネル用に debuginfo パッケージをインストールする必要があります。
uname -a コマンドで実行しているカーネルを確認し、適切な debuginfo パッケージを取得し、これをマシンにインストールします。
次に、以下のコマンドで、直前の実行の例をクリアします。
~]# opcontrol --reset
Westmere プロセッサーを持つマシン上で監視プロセスを開始するには、以下のコマンドを実行します。
~]# opcontrol --setup --vmlinux=/usr/lib/debug/lib/modules/`uname -r`/vmlinux --event=CPU_CLK_UNHALTED:500000
次に、ext4 モジュールなどの詳細情報を以下のコマンドで取得できます。
~]# opreport /ext4 -l --image-path /lib/modules/`uname -r`/kernel
CPU: Intel Westmere microarchitecture, speed 2.667e+06 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (No unit mask) count 500000
warning: could not check that the binary file /lib/modules/2.6.32-191.el6.x86_64/kernel/fs/ext4/ext4.ko has not been modified since the profile was taken. Results may be inaccurate.
samples % symbol name
1622 9.8381 ext4_iget
1591 9.6500 ext4_find_entry
1231 7.4665 __ext4_get_inode_loc
783 4.7492 ext4_ext_get_blocks
752 4.5612 ext4_check_dir_entry
644 3.9061 ext4_mark_iloc_dirty
583 3.5361 ext4_get_blocks
583 3.5361 ext4_xattr_get
479 2.9053 ext4_htree_store_dirent
469 2.8447 ext4_get_group_desc
414 2.5111 ext4_dx_find_entry