第42章 SystemTap でのカーネルアクティビティーのプロファイル

次のスクリプトを使用して、関数呼び出しを監視することにより、カーネルアクティビティーをプロファイリングできます。

42.1. SystemTap での関数呼び出しのカウント

functioncallcount.stp SystemTap スクリプトを使用して、特定のカーネル関数呼び出しを数えることができます。このスクリプトを使用して、複数のカーネル関数をターゲットにすることもできます。

前提条件

手順

  • functioncallcount.stp スクリプトを実行します。

    # stap --example functioncallcount.stp 'argument'

    このスクリプトは、ターゲットのカーネル関数を引数として取ります。引数のワイルドカードを使用すると、ある程度まで複数のカーネル関数を対象にできます。

    スクリプトの出力には、アルファベット順に、呼び出された関数の名前と、サンプル時間中に呼び出された回数が含まれています。

    以下の例を考慮してください。

    # stap -w -v --example functioncallcount.stp "*@mm*.c" -c /bin/true

    ここでは、以下のようになります。

  • -w : 警告を表示しません。
  • -v : 起動したカーネルの出力を表示します。
  • -c コマンド : コマンドの実行中に関数呼び出しを数えるように SystemTap に指示します (この例では /bin/true)。

    この出力は、以下のようになります。

    [...]
    __vma_link 97
    __vma_link_file 66
    __vma_link_list 97
    __vma_link_rb 97
    __xchg 103
    add_page_to_active_list 102
    add_page_to_inactive_list 19
    add_to_page_cache 19
    add_to_page_cache_lru 7
    all_vm_events 6
    alloc_pages_node 4630
    alloc_slabmgmt 67
    anon_vma_alloc 62
    anon_vma_free 62
    anon_vma_lock 66
    anon_vma_prepare 98
    anon_vma_unlink 97
    anon_vma_unlock 66
    arch_get_unmapped_area_topdown 94
    arch_get_unmapped_exec_area 3
    arch_unmap_area_topdown 97
    atomic_add 2
    atomic_add_negative 97
    atomic_dec_and_test 5153
    atomic_inc 470
    atomic_inc_and_test 1
    [...]