시스템 탭
SystemTap![]() | |
초기 릴리즈 | (2005년 |
---|---|
안정된 릴리스 | 4.4 / 2020년 11월 , 전( |
저장소 | |
기입처 | C, C++ |
운영 체제 | 리눅스 |
유형 | 트레이스 프로그래밍 언어 |
면허증. | GNU 일반 공중 라이선스 |
웹 사이트 | sourceware |
컴퓨팅에서 SystemTap()stap은 실행 중인 Linux 기반 운영 체제를 동적으로 계측하기 위한 스크립트 언어 및 도구입니다.시스템 관리자는 SystemTap을 사용하여 데이터를 추출, 필터링 및 요약하여 복잡한 성능 또는 기능 문제를 진단할 수 있습니다.
SystemTap은 무료 오픈 소스 소프트웨어로 구성되어 있으며 Red Hat, IBM, Intel, Hitachi, Oracle, University of 위스콘신-Madison 및 기타 커뮤니티 [1]구성원의 기여가 포함되어 있습니다.
역사
SystemTap은 2005년 Red Hat Enterprise Linux 4 Update 2에서 기술 [2]프리뷰로 첫 선을 보였습니다.
개발 4년 만에 SystemTap 1.0이 [3]2009년에 출시되었습니다.
2011년 현재[update] SystemTap은 RHEL/Cent를 포함한 모든 Linux 디스트리뷰션에서 완전히 지원되고 있습니다.업데이트 2, SLES [5]10, Fedora, Debian 및 Ubuntu 이후의 OS[4] 5.
CPython VM 및 JVM의 추적점은 [6]2009년 SystemTap 1.2에 추가되었습니다.
2019년 11월, SystemTap 4.2에는 프로메테우스 수출업체가 포함되었습니다.
사용.
SystemTap 파일은 SystemTap[7] 언어로 작성됩니다(이름:.stp
files)와 함께 실행합니다.stap
커맨드 [8]라인
시스템은 스크립트가 실행되도록 하기 전에 스크립트에 대한 여러 분석 패스를 수행합니다.스크립트는 에 의해 선택된3개의 백엔드 중 하나로 실행할 수 있습니다.--runtime=
선택.디폴트로는 로딩 가능한 커널모듈입니다.이 모듈은 시스템의 모든 부분을 검사 및 조작할 수 있는 풀 기능을 갖추고 있기 때문에 대부분의 권한이 필요합니다.또 다른 백엔드는 동적 프로그램 분석 라이브러리 DynInst에 기반하여 사용자 자신의 사용자 공간 프로그램만 계측하고 최소한의 권한을 필요로 합니다.최신[9] 백엔드는 eBPF 바이트 코드를 기반으로 하며 Linux 커널 인터프리터의 기능으로 제한되며 중간 수준의 권한이 필요합니다.어느 경우든 스크립트의 실행이 종료되면 모듈은 언로드됩니다.
스크립트는 일반적으로 이벤트(스크립트 시작 또는 종료 등), Linux "tracepoints"와 같은 컴파일된 프로브 포인트 또는 커널 또는 사용자 공간의 함수 또는 문 실행에 초점을 맞춥니다.
일부 "guru 모드" 스크립트에는 C가 내장되어 있을 수도 있습니다.C 는, 다음과 같이 동작합니다.-g
명령줄 옵션입니다.그러나 guru 모드를 사용하는 것은 권장되지 않으며, 각 SystemTap 릴리스에는 guru 모드 스크립트가 필요하지 않도록 설계된 더 많은 프로브 포인트가 포함되어 있습니다.Guru 모드는 일부 유형의 긴급 보안 수정 적용 등 계측된 소프트웨어의 상태를 변경하는 스크립트를 허용하기 위해 필요합니다.
SystemTap 버전 1.7부터는 이 소프트웨어가 새로운 stapsys 그룹 및 권한 [10]수준을 구현합니다.
간단한 예
다음 스크립트는 시스템에서 TCP 소켓 옵션을 설정하는 모든 응용 프로그램, 설정 중인 옵션 및 옵션이 올바르게 설정되었는지 여부를 보여 줍니다.
# 소켓 설정 옵션 표시 # 옵티벌 값에 따라 반환이 활성화 또는 비활성화됨 기능. 상태를 취득하다(옵티컬) { 한다면 ( 옵티컬 == 1 ) 돌아가다 "실패" 또 다른 돌아가다 "실패" } 탐침시작한다. { 인쇄물 ("\n소켓 옵션 설정 앱 확인 중\n") } # 소켓 옵션 설정 탐침 tcp.셋소켓 { 상황 = 상태를 취득하다(user_int($옵티컬)) 인쇄물 (" 앱 '%s'(PID %d)은 %s 소켓 옵션 %s입니다...", execute name(이그제큐티브 네임)(), pid(), 상황, 옵티컬) } # 소켓 옵션이 올바르게 설정되어 있는지 확인합니다. 탐침 tcp.셋소켓.돌아가다 { 한다면 ( 리트 == 0 ) 인쇄물 ('성공') 또 다른 인쇄물 ("실패") 인쇄물 ("\n") } 탐침끝. { 인쇄물 ("\n닫고 있습니다\n") }
다른 많은 예제는 SystemTap과 [11]함께 제공됩니다.War Stories 페이지에는 [12]실제 시스템Tap 사용 사례도 나와 있습니다.
다른 트레이스 테크놀로지로부터의 스크립트
시스템 Tap은 DTrace 마커를 응용 프로그램으로 컴파일할 때 DTrace 마커에 연결할 수 있습니다.sys/sdt.h
헤더 파일
「 」를 참조해 주세요.
레퍼런스
- ^ "A SystemTap update". LWN.net.
- ^ "Product Documentation for Red Hat Enterprise Linux". Red Hat.
- ^ "Josh Stone - SystemTap release 1.0".
- ^ "Product Documentation". Red Hat.
- ^ 60951 (10 October 2006). "Optional update for SystemTap". Novell.
{{cite web}}
: CS1 maint: 숫자 이름: 작성자 목록(링크) - ^ "Features/SystemtapStaticProbes - FedoraProject". Fedoraproject.
- ^ "SystemTap Language Reference".
- ^ 로마인들, 롭(2009년)을 비교해 보자."SystemTap 언어 참조:그 구문과 구문에 대한 가이드 SystemTap 스크립트에 사용되".레드 햇:4.CiteSeerX 10.1.1.172.5186.SystemTap[...]루트 권한이 실제로 SystemTap 패키지, 모듈을 싣고 부리게 되면,kernel-touser 데이터 전송에 헌신하는sudo 명령,staprun program.[...]staprun에 적용된를 사용하여 구축하는 커널 개체는 일부 실행할 것을 요구한다.{{ 들고 일기}}:Cite저널journal=( 도와 주)이 필요하다.
- ^ Merey, Aaron (2017-10-18). "systemtap 3.2 release". Retrieved 2017-10-18.
The systemtap team announces release 3.2 [...] early experimental eBPF (extended Berkeley Packet Filter) backend [...]
- ^ Eigler, Frank Ch. (2012-02-01). "systemtap 1.7 release". Retrieved 2013-03-26.
The systemtap team announces release 1.7 [...] The new group and privilege level "stapsys" has been added [...]
- ^ "SystemTap Examples".
- ^ "WarStories - Systemtap Wiki".
외부 링크
- 공식 웹사이트
- 시스템 탭 Wiki
- SystemTap 언어 레퍼런스(PDF)
- Ohloh의 SystemTap 프로젝트 분석
- DTrace 및 SystemTap을 통한 다이내믹 트레이스
- Systemtap 튜토리얼 Frank Ch.아이글러
- SystemTap 초보자 가이드 Don Domingo, William Cohen
- Systemtap을 사용한 문제 해결, Ottawa Linux 심포지엄 2006
- Red Hat Summit 2007에서 SystemTap을 사용한 문제 해결, Eugene Teo가 발표(스크립트)
- Linux World Conference 2008에서 SystemTap을 사용한 동적 추적 및 성능 분석, Joshua Stone
- SystemTap 튜토리얼, Jim Keniston, Linux Plumbers Conference 2008에서 발표