第 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 命令 : 告知 Tells 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
    [...]