SystemTap
개발자 | 다수 |
---|---|
발표일 | 2005년 |
안정화 버전 | 3.0
|
저장소 | |
프로그래밍 언어 | C, C++, 커스텀 스크립팅 |
운영 체제 | 리눅스 커널 |
종류 | 트레이싱 프로그래밍 언어 |
라이선스 | GNU 일반 공중 사용 허가서 |
웹사이트 | sourceware |
SystemTap(stap)은 실행 중인 리눅스 커널 기반 운영 체제들을 동적으로 인스트루먼팅하기 위한 스크립트 언어이자 툴이다. 시스템 관리자들은 SystemTap을 기능적인 문제들이나 복잡한 성능에 대한 진단을 위한 데이터의 추출, 필터 그리고 요약하는데 사용할 수 있다.
SystemTap은 자유-오픈 소스 소프트웨어로 이루어졌으며 레드햇, IBM, 인텔, 히타치 제작소, 오라클 그리고 다른 커뮤니티 멤버들로부터의 기여를 포함한다.[1]
역사
[편집]SystemTap은 2005년에 기술 프리뷰로서 레드햇 엔터프라이즈 리눅스 4 업데이트 2에서 처음 도입되었다.[2]
4년의 개발 이후, SystemTap 1.0이 2009년에 릴리즈되었다.[3]
2011년 SystemTap은 모든 리눅스 배포판들에서 완전히 지원되고 있다.[4][5]
CPython VM에서 Tracepoints와 자바 가상 머신이 SystemTap 1.2에 추가되었다.[6]
사용
[편집]SystemTap 언어로 쓰여진 SystemTap 파일들은(언어 레퍼런스에 기반한[7]) stap
명령어[8]로 실행되며 .stp
파일들로 저장된다. 시스템은 실행되기 전에 스크립트에 여러 단계를 이행하는데, 이 때 스크립트는 적재 가능 커널 모듈로 컴파일되고 커널에 로드된다. 기록된 모듈들은 'stap_<UUID>' 같이 각 SystemTap 스크립트를 보여준다. 이 모듈은 tap이 실행을 끝냈을 때 언로드된다.
스크립트들은 일반적으로 이벤트(스크립트의 시작과 종료 같은), 리눅스 "tracepoints" 같은 컴파일된 프로브 포인트 또는 커널이나 사용자 공간에서의 함수나 선언의 실행에 초점을 맞춘다.
어떤 "guru mode" 스크립트들은 또한 -g
명령어 옵션과 함께 동작하는 임베디드 C를 갖는다. 그러나 guru 모드의 사용은 추천되지 않으며 각 SystemTap 릴리즈는 guru 모드 tap들의 필요를 없앨 수 있게 디자인된 더 많은 프로브 포인트들을 포함한다.
systemtap 릴리즈 1.7부터 소프트웨어는 새로운 stapsys 그룹과 권한 수준을 구현하였다.[9]
간단한 예시
[편집]아래의 스크립트는 시스템에서 TCP 소켓 옵션들을 설정하는 모든 애플리케이션들과 설정된 옵션 그리고 옵션이 성공적으로 설정되었느지의 여부를 보여준다.
# Show sockets setting options # Return enabled or disabled based on value of optval function getstatus(optval) { if ( optval == 1 ) return "enabling" else return "disabling" } probe begin { print ("\nChecking for apps setting socket options\n") } # Set a socket option probe tcp.setsockopt { status = getstatus(user_int($optval)) printf (" App '%s' (PID %d) is %s socket option %s... ", execname(), pid(), status, optstr) } # Check setting the socket option worked probe tcp.setsockopt.return { if ( ret == 0 ) printf ("success") else printf ("failed") printf ("\n") } probe end { print ("\nClosing down\n") }
많은 다른 예시들은 SystemTap에 나와있다. 또한 War Stories page에 SystemTap 사용의 실제 예시들도 있다.
다른 트레이싱 기술들에서 스크립트 임포팅
[편집]SystemTap은 sys/sdt.h 헤더 파일의 매크로들을 사용해서 애플리케이션에 컴파일될 때 DTrace를 어태치할 수 있다.
같이 보기
[편집]각주
[편집]- ↑ A SystemTap update
- ↑ http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/release-notes/as-x86/RELEASE-NOTES-U2-x86-en.html
- ↑ http://sourceware.org/ml/systemtap/2009-q3/msg00831.html
- ↑ http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.2/html/Release_Notes/x86/ar01s03.html
- ↑ http://support.novell.com/techcenter/psdb/f1856527fefb7f2060aeb6907f319a09.html
- ↑ http://fedoraproject.org/wiki/Features/SystemtapStaticProbes
- ↑ http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/html/SystemTap_Tapset_Reference/index.html
- ↑ CompareRomans, Robb (2009). “SystemTap Language Reference: A guide to the constructs and syntax used in SystemTap scripts” (PDF). Red Hat. 4쪽. 2010년 12월 19일에 확인함.
SystemTap [...] requires root privileges to actually run the kernel objects it builds using the sudo command, applied to the staprun program.[...] staprun is a part of the SystemTap package, dedicated to module loading and unloading and kernel-touser data transfer.
- ↑ Eigler, Frank Ch. (2012년 2월 1일). “systemtap 1.7 release”. 2013년 3월 26일에 확인함.
The systemtap team announces release 1.7 [...] The new group and privilege level "stapsys" has been added [...]
외부 링크
[편집]- SystemTap Homepage
- SystemTap Wiki
- SystemTap Language Reference (PDF)
- SystemTap project analysis by Ohloh Archived 2012년 12월 7일 - 웨이백 머신
- Dynamic Tracing with DTrace & SystemTap
- Systemtap tutorial Frank Ch. Eigler
- SystemTap Beginner's Guide Don Domingo, William Cohen
- Problem Solving With Systemtap, Ottawa Linux Symposium 2006
- Problem Solving with SystemTap Archived 2012년 2월 22일 - 웨이백 머신, Eugene Teo, presented at the Red Hat Summit 2007 (scripts)
- Dynamic Tracing and Performance Analysis Using SystemTap, Joshua Stone, presented at the LinuxWorld Conference 2008
- SystemTap Tutorial, Jim Keniston, presented at the Linux Plumbers Conference 2008