DTrace

DTrace
DTrace
DTrace on Windows v10.0.19041.1 1115x966.png
DTrace명령어
원저작자Bryan Cantrill, Adam Leventhal, Mike Shapiro(Sun Microsystems)
개발자Oracle, Microsoft
초기 릴리즈2005년 1월, 17년 전(2005-01)
저장소github.com/opendtrace
기입처C
운영 체제Solaris, Illumos, macOS, FreeBSD, NetBSD, Linux,[1] Windows[2]
유형트레이스
면허증.CDDL, GPLv2, UPL
웹 사이트dtrace.org/blogs/about/

DTrace는 운영 시스템의 커널 및 애플리케이션 문제를 실시간으로 해결하기 위해 Sun Microsystems에 의해 개발된 포괄적인 동적 추적 프레임워크입니다.원래 Solaris용으로 개발된 이 제품은 이후 OpenSolaris 및 그 후속 일루미노에서 무료 CDDL(Common Development and Distribution License)로 출시되었으며 다른 여러 Unix 계열 시스템으로 이식되었습니다.

DTrace를 사용하면 활성 프로세스에서 사용되는 메모리 양, CPU 시간, 파일 시스템 및 네트워크 리소스 등 실행 중인 시스템의 글로벌 개요를 얻을 수 있습니다.또한 특정 함수가 호출되는 인수의 로그나 특정 파일에 액세스하는 프로세스의 목록 등 보다 상세한 정보를 제공할 수도 있습니다.

2010년 Oracle Corporation은 Sun Microsystems를 인수하여 OpenSolaris의 중단을 발표했습니다.진정한 오픈 소스 Solaris를 구축하기 위한 Solaris 핵심 엔지니어의 커뮤니티 활동으로서 2010년 [3]8월 3일 목요일 웹 세미나를 통해 DTrace 기술을 포함한 OpenSolaris OS/Net 통합에 대한 분기로서 Illumos 운영 체제가 발표되었습니다.

2011년 10월 오라클은 [4]DTrace를 Linux이식한다고 발표했으며 2019년에는 Fedora용 DTrace를 GitHub에서 사용할 수 있습니다.수년간 Linux에 대한 비공식 DTrace 포트를 사용할 수 있었지만 라이센스 [5]조건은 변경되지 않았습니다.

2017년 8월 오라클은 GPLv2+ 라이센스로 DTrace 커널 코드를, GPLv2 [6]UPL 라이센스로 사용자 공간 코드를 출시했습니다.2018년 9월 Microsoft는 FreeB에서 DTrace를 이식했다고 발표했습니다.SD에서 [2]Windows로

2016년 9월 오픈DTrace는 시스템 내부 코드와 포괄적인 문서 모두를 사용하여 github에서 작업을 시작했습니다.오픈DTrace는 OpenSolaris에서 코드에 대한 원래의 CDDL 라이선스를 유지하며 BSD 2 Clause 라이선스에 따라 추가 코드 기여가 이루어집니다.오픈의 목표DTrace는 OS에 구애받지 않는 휴대용 DTrace 구현을 제공합니다.MacOS, FreeBSD, OpenBSD, NetBSD, Linux는 물론 임베디드 시스템도 포함하여 모든 사용자가 사용할 수 있습니다.

묘사

Sun Microsystems는 DTrace를 설계하여 사용자가 애플리케이션과 OS 자체를 조정 및 트러블 슈팅할 수 있도록 했습니다.

테스터는 D 프로그래밍 언어를 사용하여 추적 프로그램(스크립트라고도 함)을 작성합니다("D"라는 이름의 다른 프로그래밍 언어와 혼동하지 마십시오).C에서 영감을 받은 이 언어에는 트레이스 고유의 추가 기능과 변수가 포함되어 있습니다.D 프로그램은 구조적으로 awk 프로그램과 유사하며, 하나 이상의 프로브(계장점) 목록으로 구성되며 각 프로브는 액션과 관련되어 있습니다.이러한 프로브는 애스펙트 지향 프로그래밍의 포인트 컷과 유사합니다.프로브의 조건이 충족될 때마다 관련 작업이 실행됩니다(프로브가 "발사").일반적인 프로브는 특정 파일이 열리거나 프로세스가 시작되거나 특정 코드 행이 실행될 때 실행될 수 있습니다.기동하는 프로브는 콜스택과 컨텍스트 변수에 액세스하여 식을 평가함으로써 런타임 상황을 분석할 수 있습니다.그 후, 몇개의 정보를 인쇄 또는 로그 하거나 데이터베이스에 기록하거나 컨텍스트 변수를 변경할 수 있습니다.컨텍스트 변수 읽기 및 쓰기를 통해 프로브는 서로 정보를 전달할 수 있으므로 서로 다른 이벤트의 상관 관계를 공동으로 분석할 수 있습니다.

DTrace를 실가동 환경에서 안전하게 사용할 수 있도록 특별한 고려가 이루어지고 있습니다.예를 들어 트레이스가 진행 중일 때는 프로브 효과가 최소한으로 억제되며 디세이블 프로브와 관련된 퍼포먼스에 미치는 영향은 없습니다.이거는 유효하게 할 수 있는 DTrace 프로브가 수만 개이기 때문에 중요합니다.새로운 프로브를 동적으로 작성할 수도 있습니다.

명령줄 예시

DTrace 스크립트는 명령줄에서 직접 호출하여 1개 이상의 프로브와 액션을 인수로 제공할 수 있습니다.몇 가지 예:

인수를 사용# 새로운 프로세스dtrace-n'proc:::exec-success{trace(curpsinfo->, pr_psargs).}의 # 파일 과정 dtrace-n'syscall에 의해 열려::open*:프로그램 dtrace-n'syscall 진입{printf("%s%s",execname,copyinstr(arg0).}'#Syscall 수:::항목{@ num[execname])count().}'syscall dtrace-n 'syscall에 의해#Syscall 수:::진입{@ num용.프로befunc] = count(); }' # 프로세스 dtrace - n 'syscall:: 엔트리 {@num[pid,execname] = count(); }' # 프로세스 dtrace -n 'io::: start {flint%d %d", pid, execname, bcount[0] } }의 디스크 크기

스크립트는 수백 행까지 쓸 수 있지만 일반적으로 고도의 트러블 슈팅과 분석에는 수십 행만 필요합니다.200개가 넘는 오픈소스 DTrace 스크립트의 는 Brendan Gregg(DTrace[8] Book의 저자)가 작성한DTraceToolkit에 [7]있습니다.DTrace 스크립트는 각각의 문서와 데모를 제공합니다.

지원되는 플랫폼

DTrace는 2003년 11월에 처음 사용 가능하게 되어 2005년 1월에 Sun의 Solaris 10의 일부로 정식 출시되었습니다.DTrace는 OpenSolaris 프로젝트의 첫 번째 컴포넌트로 CDDL(Common Development and Distribution License)에 따라 소스 코드를 공개했습니다.

DTrace는 일루미노 및 관련 배포의 필수 요소입니다.

DTrace는 FreeBSD[9]NetBSD[10]표준 부품입니다.

애플은 [11]인스트루먼트라고 불리는 GUI를 포함하여 Mac OS X 10.5 "Leopard"에 DTrace 지원을 추가했다./usr/[12]bin에는 디스크 I/O(iosnoop) 및 프로세스 실행(execsnoop)을 검사하는 도구를 포함하여 DTrace Toolkit의 40개 이상의 DTrace 스크립트가 포함되어 있습니다.DTrace가 지원되는 다른 플랫폼과 달리 Mac OS X에는 DTrace 및 gdb 등의 유틸리티를 디버깅하여 해당 프로세스의 트레이스를 허용하지 않는 플래그(P_LNOATTACH)가 있습니다.원래의 Mac OS X DTrace 실장에서는, 이 플래그가 설정되어 있는 프로그램이 실행되고 있을 때에 기동할 필요가 있는 관련 없는 프로브가 [13]기동하지 않게 되어, 다른 시스템 정보의 트레이스에 영향을 줄 가능성이 있습니다.[14]달 후 OS X 10.5.3 업데이트로 이 문제가 해결되었습니다.그러나 El Capitan 이후 시스템 무결성 보호는 기본적으로 사용자가 보호된 이진수를 DTracing할 수 없도록 합니다.

DTrace의 Linux 포트는 [15]2008년부터 제공되고 있습니다.문제를 개선 및 수정하기 위한 작업은 계속 진행 중입니다.github에서도 액티브한 실장이 있습니다.표준 코어 프로바이더(fbt, syscall, profile)와 더불어 특별한 "instr" 프로바이더(2013년 현재 일부 Solaris 프로바이더는 아직 제공되지 않음)를 이용할 수 있습니다.Linux DTrace 실장은 로딩 가능한 커널 모듈입니다.즉, 커널 자체는 변경할 필요가 없기 때문에 DTrace는 CDDL과 GPL의 라이센스 경합을 피할 수 있습니다(적어도 소스 형식).그러나 DTrace가 로드되면 커널 인스턴스는 오염된 것으로 표시됩니다.

2007년 QNX Software Systems의 한 개발자는 자신의 블로그에서 동료와 함께 DTrace[16]QNX 운영 체제에 통합하는 작업을 진행 중이라고 발표했습니다.

Oracle Corporation은 [1]GPLv2(DTrace Linux 커널 모듈은 원래 CDDL로 [17]출시되었습니다)의 Unbreakable Enterprise Kernel 릴리스 2에서 테크놀로지 프리뷰로 2011년에 Oracle Linux에 대한 베타 DTrace 지원을 추가했습니다.일반 [18][19]가용성은 2012년 12월에 발표되었습니다.

2019년 3월 11일, 마이크로소프트는 Windows 10 내부 [20]빌드를 위한 DTrace 빌드를 발표했습니다.

언어 및 응용 프로그램 프로바이더

지원되는 언어 공급자를 사용하면 DTrace는 함수, 소스 파일, 회선 번호 위치 등 코드의 컨텍스트를 가져올 수 있습니다.또,[21] 언어에 의해서 서포트되고 있는 경우는, 동적 메모리 할당이나 가비지 수집을 이용할 수 있다.지원되는 언어 공급자는 어셈블리[clarification needed] 언어, C, C++, Java, Erlang, JavaScript, Perl, PHP, Python, Ruby, 셸 스크립트Tcl포함합니다.

응용 프로그램 공급자는 DTrace가 시스템 호출을 통해 커널에 응용 프로그램의 동작을 따를 수 있도록 합니다.DTrace 어플리케이션 프로바이더를 제공하는 어플리케이션에는 MySQL, Postgre 이 있습니다.SQL, Oracle Database, Oracle Grid Engine 및 [21][22][23]Firefox가 있습니다.

저자 및 수상자

DTrace는 Bryan Cantrill, Mike ShapiroAdam Leventhal의해 설계 및 구현되었습니다.

저자들은 2005년에 InfoWorld와 Technology [24][25]Review로부터 DTrace의 혁신을 인정받았다.DTrace는 월스트리트저널 2006년 기술혁신상 대회에서 [26]최우수상을 수상했습니다.저자들은 USENIX에 의해 2008년 [27]Software Tools User Group(STUG) 어워드로 인정받았습니다.

「 」를 참조해 주세요.

  • eBPF – 커널 버전 4.9 이후 DTrace와[28] 유사한 기능을 제공하는 Linux 커널 트레이스 백엔드
  • ftrace – 일정 이벤트, 인터럽트, 메모리 매핑 I/O, CPU 전원 상태 이행 등을 추적할 수 있는 Linux 커널용 트레이스 프레임워크입니다.
  • ktrace – 커널과 프로그램의 상호작용을 추적하는 BSD Unix 및 MacOS 유틸리티
  • ltrace: Linux 디버깅 유틸리티.사용자랜드 어플리케이션이 공유 라이브러리에 발신한 콜을 표시합니다.
  • strace – Linux용 디버깅 유틸리티로 프로그램에서 사용되는 시스템콜과 수신된 모든 신호를 감시합니다.
  • SystemTap – Linux 설치에 사용되는 스크립트 언어 및 유틸리티
  • LTTng
  • IBM ProbeVue

레퍼런스

  • Cantrill, Bryan (February 2006). "Hidden in Plain Sight". ACM Queue. 4 (1): 26–36. doi:10.1145/1117389.1117401. Retrieved 2017-12-19.
  • Bryan M. Cantrill, Michael W. Shapiro and Adam H. Leventhal (June 2004). Dynamic Instrumentation of Production Systems. Proceedings of the 2004 USENIX Annual Technical Conference. Retrieved 2006-09-08.

메모들

  1. ^ a b Wim Coekaerts (2011-10-09). "Trying out dtrace". blogs.oracle.com. Retrieved 2018-02-15.
  2. ^ a b "OS internals: Technical deep-dive into operating system innovations - BRK3365". Microsoft Ignite Channel. 2018-10-08.
  3. ^ D'Amore, Garrett (3 August 2010). "Illumos - Hope and Light Springs Anew - Presented by Garrett D'Amore" (PDF). illumos.org. Retrieved 3 August 2010.
  4. ^ "Oracle To Bring Dtrace To Linux". Slashdot. 2011-10-04. Retrieved 2020-11-11.
  5. ^ [1] "원래 DTrace는 Sun(현 Oracle)의 CDDL 라이선스로 라이선스됩니다.원본 저작권은 그대로 유지됩니다.법적 충돌을 피하기 위해 GPL 코드는 릴리스에 포함되어 있지 않습니다."
  6. ^ Wielaard, Mark J. (2018-02-14). "dtrace for linux; Oracle does the right thing". Mark J. Wielaard blog. Retrieved 2018-02-14.
  7. ^ "DTraceToolkit". Brendan Gregg. Retrieved 2014-06-08.
  8. ^ DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD. Safari Books. 2011. ISBN 0132091518. Retrieved 2011-01-03.
  9. ^ "FreeBSD 7.1-RELEASE Announcement". 2009-01-06. Retrieved 2009-01-06.
  10. ^ "NetBSD source changes, 21 February 2010".
  11. ^ "Mac OS X Leopard - Developer Tools - Instruments". Apple Inc. Archived from the original on 2007-10-24. Retrieved 2007-10-19.
  12. ^ "Mac OS X DTrace". Apple Inc. Retrieved 2010-05-31.
  13. ^ "Mac OS X and the missing probes". Leventhal, Adam H. January 18, 2008. Retrieved 2008-01-20.
  14. ^ "Apple Updates DTrace". Leventhal, Adam H. June 7, 2008. Retrieved 2008-06-16.
  15. ^ "CRiSP tools download page". Retrieved 2011-03-02.
  16. ^ "DTrace on QNX!". Oracle The Observation Deck Blog. November 8, 2007.
  17. ^ Zannoni, Elena; Van Hees, Kris (2012). DTrace on Linux (PDF). Linux Foundation Collaboration Summit. Archived from the original (PDF) on 2014-07-07. Retrieved 2012-04-05.
  18. ^ Koch, Zeynep (December 12, 2012). "Announcement: DTrace for Oracle Linux General Availability". Oracle Linux Blog.
  19. ^ Linux용 DTrace 모듈 소스 코드
  20. ^ Pulapaka, Hari (March 11, 2019). "DTrace on Windows". Microsoft Tech Community.
  21. ^ a b DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD. Prentice Hall. 2011. p. 1152. ISBN 9780132091510.
  22. ^ "Open Grid Scheduler / Grid Engine Documentation". Open Grid Scheduler. Retrieved December 30, 2012.
  23. ^ "DTrace – MDN". Mozilla. Retrieved December 30, 2012.
  24. ^ "Tracing software in real time". Technology Review. MIT. 2005. Retrieved 2007-03-31.
  25. ^ McAllister, Neil (August 2005). "Innovation is alive and well in 2005". InfoWorld. IDG. Archived from the original on 2005-11-23. Retrieved 2007-03-31.
  26. ^ Totty, Michael (September 2006). "The Winners Are..." The Wall Street Journal. Dow Jones & Company, Inc. Retrieved 2007-03-31.
  27. ^ "2008 USENIX Annual Technical Conference (USENIX '08)". 2008. Retrieved 2008-11-26.
  28. ^ "DTrace Tools". Retrieved 2017-11-27.

외부 링크