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을 Tells합니다(이 예제에서는 /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
    [...]