第 40 章 使用 SystemTap 分析内核活动
您可以使用以下脚本,通过监控函数调用来分析内核活动。
40.1. 使用 SystemTap 的计数功能调用
您可以使用 functioncallcount.stp SystemTap 脚本来计算特定的内核功能调用。您还可以使用这个脚本来目标多个内核功能。
先决条件
- 如安装 Systemtap 所述,已安装了 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 [...]