39.5. SystemTap 스크립트의 유용한 예
SystemTap 설치와 함께 배포되는 샘플 예제 스크립트는 /usr/share/systemtap/examples
디렉터리에서 확인할 수 있습니다.
stap
명령을 사용하여 다른 SystemTap 스크립트를 실행할 수 있습니다.
- 함수 호출 추적
para-callgraph.stp
SystemTap 스크립트를 사용하여 함수 호출 및 함수 반환을 추적할 수 있습니다.# stap para-callgraph.stp argument1 argument2
이 스크립트는 두 가지 명령줄 인수를 사용합니다. 추적 중인 항목/exit이 있는 함수의 이름입니다. 스레드별로 추적을 활성화하거나 비활성화하는 선택적 트리거 기능입니다. 트리거 함수가 아직 종료되지 않은 한 각 스레드에서 추적은 계속됩니다.
- 폴링 애플리케이션 모니터링
timeout.stp SystemTap 스크립트를 사용하여 폴링 중인 애플리케이션을 식별하고 모니터링할 수 있습니다. 이를 알고, 불필요한 또는 과도한 폴링을 추적할 수 있으므로 CPU 사용량 및 전력 절감 측면에서 개선할 수 있는 영역을 정확하게 파악할 수 있습니다.
# stap timeout.stp
이 스크립트는 각 애플리케이션이
폴링
을 사용하는 횟수를 추적하고, 시간 경과에 따른 , 에포일,itimer
,futex
,nanosleep
및 Cryostat 시스템 호출을선택합니다
.- 프로세스당 시스템 호출 볼륨 추적
syscalls_by_proc.stp
SystemTap 스크립트를 사용하여 시스템 호출의 가장 많은 볼륨을 수행하는 프로세스를 확인할 수 있습니다. 가장 많은 시스템 호출을 수행하는 20개의 프로세스를 표시합니다.# stap syscalls_by_proc.stp
- 네트워크 소켓 코드에서 호출되는 추적 함수
socket-trace.stp
예제 SystemTap 스크립트를 사용하여 커널의 net/socket.c 파일에서 호출되는 함수를 추적할 수 있습니다. 이를 통해 각 프로세스가 커널 수준에서 네트워크와 상호 작용하는 방법을 자세히 확인할 수 있습니다.# stap socket-trace.stp
- 각 파일 읽기 또는 쓰기에 대한 I/O 시간 추적
iotime.stp
SystemTap 스크립트를 사용하여 각 프로세스를 읽거나 파일에 쓰는 데 걸리는 시간을 모니터링할 수 있습니다. 이렇게 하면 시스템에서 로드하는 속도가 느린 파일을 결정하는 데 도움이 됩니다.# stap iotime.stp
- 작업에서 사이클을 훔치는 IRQ 및 기타 프로세스 추적
cycle_thief.stp
SystemTap 스크립트를 사용하여 작업이 실행되는 시간과 실행되지 않는 시간을 추적할 수 있습니다. 이를 통해 작업에서 사이클을 훔치는 프로세스를 식별하는 데 도움이 됩니다.# stap cycle_thief.stp -x pid
SystemTap 스크립트에 대한 자세한 예제와 정보는 /usr/share/systemtap/examples/index.html
파일에서 확인할 수 있습니다. 웹 브라우저에서 열어 사용 가능한 모든 스크립트 및 해당 설명을 확인합니다.
추가 리소스
-
/usr/share/systemtap/examples
디렉토리