bpftrace는 Linux용 고급 추적 언어입니다. bpftrace는 LLVM을 백엔드로 사용하여 스크립트를 eBPF 바이트 코드로 컴파일하고 libbpf 및 bcc를 사용하여 Linux BPF 하위 시스템과 상호 작용할 뿐만 아니라 기존 Linux 추적 기능인 커널 동적 추적(kprobes), 사용자 수준 동적 추적(uprobes)을 수행합니다. ), 추적점 등. bpftrace 언어는 awk, C 및 DTrace 및 SystemTap과 같은 이전 추적 프로그램에서 영감을 받았습니다. bpftrace는 Alastair Robertson이 만들었습니다.
설치 및 구축 방법
매뉴얼/참조 가이드
지도 시간
예시 1-라이너
비디오
도구
기여하다
개발
지원하다
마이그레이션 가이드
프로브 유형
플러그인
특허
다음 한 줄짜리 코드는 다양한 기능을 보여줍니다.
# Files opened by thread name bpftrace -e 'tracepoint:syscalls:sys_enter_open { printf("%s %sn", comm, str(args->filename)); }' # Syscall count by thread name bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }' # Read bytes by thread name: bpftrace -e 'tracepoint:syscalls:sys_exit_read /args->ret/ { @[comm] = sum(args->ret); }' # Read size distribution by thread name: bpftrace -e 'tracepoint:syscalls:sys_exit_read { @[comm] = hist(args->ret); }' # Show per-second syscall rates: bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @ = count(); } interval:s:1 { print(@); clear(@); }' # Trace disk size by PID and thread name bpftrace -e 'tracepoint:block:block_rq_issue { printf("%d %s %dn", pid, comm, args->bytes); }' # Count page faults by thread name bpftrace -e 'software:faults:1 { @[comm] = count(); }' # Count LLC cache misses by thread name and PID (uses PMCs): bpftrace -e 'hardware:cache-misses:1000000 { @[comm, pid] = count(); }' # Profile user-level stacks at 99 Hertz for PID 189: bpftrace -e 'profile:hz:99 /pid == 189/ { @[ustack] = count(); }' # Files opened in the root cgroup-v2 bpftrace -e 'tracepoint:syscalls:sys_enter_openat /cgroup == cgroupid("/sys/fs/cgroup/unified/mycg")/ { printf("%sn", str(args->filename)); }'
보다 강력한 스크립트를 쉽게 구성할 수 있습니다. 예를 보려면 도구를 참조하세요.
참고: 이 비디오의 일부 콘텐츠는 최신 내용이 아닐 수 있으며, 현재 참조 가이드가 정보의 원천입니다.
bpftrace를 더욱 강력하게 만들기 - 2023
Bpftrace 레시피: 5가지 실제 문제 해결 - 2023년
bpftrace로 Linux 추적이 더욱 간편해졌습니다 - 2022
사전 컴파일된 bpftrace 프로그램 - 2021
BPF 관측성 시작하기 - 2021
bpftrace 내부 - 2020
Performance Co-Pilot 및 Grafana와 함께 bpftrace 사용 - 2020
bpftrace 추적 언어 소개 - 2020
기여를 환영합니다! 자세한 내용은 아래 개발 섹션을 참조하세요. 새로운 bpftrace 도구의 경우 새 사용자 도구 저장소에 추가하세요. 이 저장소에 존재하는 도구는 bpftrace 관리자가 선별한 작은 컬렉션입니다.
버그 보고서 및 기능 요청: 이슈 트래커
개발 IRC: irc.oftc.net의 #bpftrace
좋은 첫 번째 문제
코딩 지침
개발 가이드
개발 로드맵
퍼징
아니야
출시 프로세스
테스트
추가 도움/토론이 필요하면 토론 페이지를 이용하세요.
우리는 또한 대중에게 정규 근무 시간을 공개하고 있습니다.
자세한 내용은 설명서를 참조하세요.
bpftrace에는 구문을 편집기에 통합하는 여러 플러그인/정의가 있습니다.
이맥스
정력
VS 코드
저작권 2019 Alastair Robertson
Apache 라이센스 버전 2.0("라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다. 다음에서 라이센스 사본을 얻을 수 있습니다.
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에서 요구하거나 서면으로 동의하지 않는 한, 라이선스에 따라 배포되는 소프트웨어는 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건 없이 "있는 그대로" 배포됩니다. 라이선스에 따른 허가 및 제한 사항을 관리하는 특정 언어는 라이선스를 참조하세요.