bpftrace هي لغة تتبع عالية المستوى لنظام Linux. يستخدم bpftrace LLVM كواجهة خلفية لتجميع البرامج النصية إلى eBPF-bytecode ويستخدم libbpf وbcc للتفاعل مع نظام Linux BPF الفرعي، بالإضافة إلى إمكانات تتبع Linux الحالية: التتبع الديناميكي kernel (kprobes)، والتتبع الديناميكي على مستوى المستخدم (uprobes). )، نقاط التتبع، وما إلى ذلك. لغة bpftrace مستوحاة من أدوات التتبع awk وC والمتتبعات السابقة مثل DTrace وSystemTap. تم إنشاء bpftrace بواسطة أليستر روبرتسون.
كيفية التثبيت والبناء
دليل / دليل مرجعي
درس تعليمي
مثال على الخطوط الواحدة
فيديوهات
أدوات
يساهم
تطوير
يدعم
دليل الهجرة
أنواع التحقيق
الإضافات
رخصة
تُظهر الخطوط الفردية التالية قدرات مختلفة:
# 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، الإصدار 2.0 ("الترخيص")؛ لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم يكن ذلك مطلوبًا بموجب القانون المعمول به أو تم الاتفاق عليه كتابيًا، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي"، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص لمعرفة الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.