KUtrace는 모든 코어가 동작하는 다중 코어 프로세서에서 모든 실행 시간을 관찰할 수 있는 매우 낮은 오버헤드의 Linux 커널 트레이싱 시설입니다. 어떤 컴퓨터 언어로 작성된 사용자 프로그램이 수정 없이 실행되는 동안에도 빠짐없이 추적합니다. 이 기술은 장기간 성능 미스터리를 이해하기 위해 라이브 데이터센터(x86 프로세서)와 실시간 자율 주행(ARM 프로세서)에 사용되어 왔습니다. KUtrace의 설계 목표는 테스트 대상 시스템을 왜곡하지 않을 만큼 낮은 오버헤드를 유지하면서, 실시간 트랜잭션이나 데이터베이스 처리에서 발생하는 예상치 못한 지연 응답의 근본 원인(root cause)을 밝혀내는 것입니다.
이 2022년 3월 업데이트는 이전의 2019년 저장소를 완전히 대체합니다.
이 디렉터리에는 Richard L. Sites가 저술한 『Understanding Software Dynamics』 (ISBN 978-0137589739) 책과 관련된 파일들이 포함되어 있습니다.
book-figures 디렉터리에는 이 책의 다이어그램 100개 이상에 대한 기본 HTML 파일이 담겨 있어, 사용자가 여기저기 돌아다니며 더 많은 맥락을 보거나 다른 성능 문제를 발견할 수 있게 합니다. Chrome 브라우저에서 가장 잘 작동합니다.
kutrace_user_guide.pdf 파일은 더 자세한 내용을 제공하며 책의 19장 내용보다 최신입니다. HTML 파일을 완전히 사용하려면 이 문서를 읽어보세요.
hello_world_trace.html 파일은 book-user-code에서 찾을 수 있는 hello_world_trace.c 프로그램의 예시 트레이스입니다.
book-user-code 디렉터리에는 책에 사용된 모든 프로그램과 이를 컴파일하는 스크립트가 포함되어 있습니다. 이들은 x86 및 Rpi4 머신 모두에서 컴파일되고 실행됩니다.
linux_patches_installation_guide.pdf는 패치를 빌드하기 위한 간략한 지침을 제공합니다.
loadable-module 디렉터리에는 KUtrace의 대부분을 구현하는 보조 커널 모듈의 소스 코드와 Makefile이 포함되어 있습니다. 이는 AMD 및 Intel x86 머신과 Raspberry Pi4-B용으로 빌드됩니다.
patches-* 파일에는 세 가지 다른 버전의 리눅스 운영체제에 KUtrace를 추가하기 위한 원본 소스와 패치된 소스 쌍이 포함되어 있습니다. 이 파일들은 원래 리눅스 소스 다운로드의 일치하는 디렉토리에 구조화되어 있습니다. patches-linux-5.10.46-rpi4 폴더에는 이 세 버전 중 어느 하나에 대한 패치된 커널을 빌드하거나 다른 버전에 패치를 통합하기 위한 추가 문서와 유용한 스크립트가 포함되어 있습니다. 이 코드는 64비트 리눅스 버전만 지원하며, KUtrace의 32비트 포트는 가능하지만 어렵습니다.
모든 코드는 오픈 소스로 공개되었으며, 대부분 BSD 3조항 라이선스를 따릅니다. freebsd에 특화된 코드는 BSD2 라이선스를 사용하고, risc-v에 특화된 코드는 GPL-2.0 하에 라이선스가 부여되었습니다. 리눅스 로드 가능 모듈(loadable module)은 리눅스에서 GPL-2.0 하에 라이선스가 부여되어야 합니다.