bpftrace เป็นภาษาการติดตามระดับสูงสำหรับ Linux bpftrace ใช้ LLVM เป็นแบ็กเอนด์เพื่อคอมไพล์สคริปต์เป็น eBPF-bytecode และใช้ libbpf และ bcc สำหรับการโต้ตอบกับระบบย่อย Linux BPF รวมถึงความสามารถในการติดตาม Linux ที่มีอยู่: การติดตามแบบไดนามิกของเคอร์เนล (kprobes) การติดตามแบบไดนามิกระดับผู้ใช้ (uprobes ) จุดติดตาม ฯลฯ ภาษา bpftrace ได้รับแรงบันดาลใจจาก awk, C และเครื่องมือติดตามรุ่นก่อน เช่น DTrace และ SystemTap bpftrace สร้างโดย Alastair Robertson
วิธีการติดตั้งและสร้าง
คู่มือ / คู่มืออ้างอิง
บทช่วยสอน
ตัวอย่าง One-Liners
วิดีโอ
เครื่องมือ
มีส่วนช่วย
การพัฒนา
สนับสนุน
คู่มือการโยกย้าย
ประเภทของโพรบ
ปลั๊กอิน
ใบอนุญาต
หนึ่งซับต่อไปนี้แสดงให้เห็นถึงความสามารถที่แตกต่างกัน:
# 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
การติดตาม Linux ง่ายขึ้นด้วย bpftrace - 2022
โปรแกรม bpftrace ที่คอมไพล์ล่วงหน้า - 2021
เริ่มต้นใช้งานความสามารถในการสังเกต BPF - 2021
ภายใน bpftrace - 2020
ใช้ bpftrace กับ Performance Co-Pilot & Grafana - 2020
ข้อมูลเบื้องต้นเกี่ยวกับภาษาการติดตาม bpftrace - 2020
ยินดีบริจาค! โปรดดูส่วนการพัฒนาด้านล่างสำหรับข้อมูลเพิ่มเติม สำหรับเครื่องมือ bpftrace ใหม่ โปรดเพิ่มลงในที่เก็บเครื่องมือผู้ใช้ใหม่ เครื่องมือที่มีอยู่ในที่เก็บนี้เป็นคอลเลกชันขนาดเล็กที่ดูแลโดยผู้ดูแล bpftrace
รายงานข้อผิดพลาดและการร้องขอคุณสมบัติ: ตัวติดตามปัญหา
การพัฒนา IRC: #bpftrace ที่ irc.oftc.net
ประเด็นแรกที่ดี
แนวทางการเข้ารหัส
คู่มือการพัฒนา
แผนงานการพัฒนา
คลุมเครือ
ห้าม
กระบวนการเผยแพร่
การทดสอบ
หากต้องการความช่วยเหลือ / การสนทนาเพิ่มเติม โปรดใช้หน้าการสนทนาของเรา
นอกจากนี้เรายังถือเวลาทำการปกติที่เปิดให้บุคคลทั่วไปเข้าชมอีกด้วย
ดูคู่มือสำหรับรายละเอียดเพิ่มเติม
bpftrace มีปลั๊กอิน/คำจำกัดความหลายแบบ ซึ่งรวมไวยากรณ์ไว้ในโปรแกรมแก้ไขของคุณ
อีแมคส์
เป็นกลุ่ม
รหัส VS
ลิขสิทธิ์ 2019 อลาสแตร์ โรเบิร์ตสัน
ได้รับอนุญาตภายใต้ Apache License เวอร์ชัน 2.0 ("ใบอนุญาต"); คุณไม่สามารถใช้ไฟล์นี้ได้เว้นแต่จะเป็นไปตามใบอนุญาต คุณสามารถขอรับสำเนาใบอนุญาตได้ที่
http://www.apache.org/licenses/LICENSE-2.0
เว้นแต่กฎหมายที่ใช้บังคับกำหนดหรือตกลงเป็นลายลักษณ์อักษร ซอฟต์แวร์ที่เผยแพร่ภายใต้ใบอนุญาตนี้จะถูกแจกจ่าย "ตามที่เป็น" โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและข้อจำกัดภายใต้ใบอนุญาต