تخطَّ إلى المحتوى

samply - محترف أخذ العينات مع واجهة Firefox Profiler

samply - محترف أخذ العينات مع واجهة Firefox Profiler

samply هو محترف أخذ عينات من سطر الأوامس عبر الأنظمة الأساسية لـ macOS و Linux و Windows. يقوم بأخذ عينات من تتبعات المكدس لأمر أو عملية قيد التشغيل (افتراضي ~1000 Hz) ثم يخدم النتائج إلى واجهة ويب Firefox Profiler — واجهة نهاية أمامية ناضجة وتفاعلية مع رسوم بيانية لهبية وجداول مكدس وشجرة استدعاء وخيوط زمنية لكل خيط. يقوم بحساب الملف الشخصي للرمز الأصلي (C/C++/Rust/Go) والعديد من اللغات الأخرى التي تصدر معلومات المكدس المعيارية بدون تغييرات الرمز.

التثبيت

الطريقةالأمر
Cargocargo install --locked samply
ملف ثنائيقم بالتحميل من صفحة GitHub Releases
وصول حدث perf Linuxقد تحتاج sysctl kernel.perf_event_paranoid=1 (أو منخفض)
التحققsamply --version

الاستخدام الأساسي

الأمرالوصف
samply record ./my-program argsملف تعريفي أمر ثم افتح واجهة المستخدم
samply record -- cargo run --releaseملف تعريفي بعد -- (مرر الأعلام من خلال)
samply record --pid 1234ملف تعريفي عملية تعمل بالفعل
samply load profile.json.gzأعد فتح ملف تعريف محفوظ في واجهة المستخدم
samply --helpقائمة الخيارات الكاملة

خيارات التسجيل

الخيارالوصف
-r, --rate Nمعدل أخذ العينات بـ Hz (افتراضي ~1000)
-o, --output FILEحفظ الملف الشخصي إلى ملف
--save-onlyالتسجيل بدون إطلاق متصفح واجهة المستخدم
-p, --pid PIDالإرفاق بعملية قيد التشغيل
-d, --duration SECSملف تعريفي لمدة ثابتة
--reuse-threadsتعديل معالجة الخيط لبعض أحمال العمل
--كل شيء بعد هو الأمر + حجج الخاصة به

واجهة Firefox Profiler

بعد التسجيل يفتح samply عرض محترف Firefox محلي. الأجزاء الرئيسية:

اللوحةيعرض
الرسم البياني اللهبمكدس مجمع (حيث يتم قضاء الوقت)
جدول المكدسالوقت على المحور السيني والمكدسات مكدسة بشكل عمودي
شجرة الاستدعاءمن أعلى إلى أسفل / هرمية من الأسفل إلى الأعلى مع الذاتي/الإجمالي الوقت
جدول العلامةالأحداث بمرور الوقت (إن وجدت)
الخيط الزمنينشاط لكل خيط؛ حدد نطاقاً للتركيز
إجراء واجهة المستخدمالاستخدام
حدد نطاق زمنيتحليل التركيز على جزء من التشغيل
اقلب المكدسالبحث عن وظائف ورقية ساخنة (وقت ذاتي)
بحثتصفية شجرة الاستدعاء حسب اسم الدالة
المشاركة/التصديرحفظ أو تحميل الملف الشخصي

نصائح سير العمل

الهدفالنهج
البحث عن مسارات CPU الساخنةالتسجيل والفتح الرسم البياني اللهب ابحث عن إطارات عريضة
البحث عن مرحلة بطيئة معينةحدد نطاق الوقت ذلك في الخيط الزمني
مقارنة البنىحفظ ملفات شخصية وتحميل جنباً إلى جنب
تقليل الضوضاءملف شخصي الإفراج عن البنية بمعلومات التصحيح (debug = true)

سير العمل الشائع

# ملف تعريفي Rust release build (احتفظ برموز معلومات التصحيح)
samply record -- cargo run --release

# ملف تعريفي خادم تشغيل لمدة 20 ثانية
samply record --pid $(pgrep -n myserver) -d 20

# التسجيل بدون رؤوس في CI وفحص الحفنة لاحقاً
samply record --save-only -o prof.json.gz ./bench
samply load prof.json.gz

samply مقابل محترفين آخرين

الجانبsamplyperf + FlameGraphhotspot
الأنظمة الأساسيةmacOS/Linux/WindowsLinuxLinux
واجهة المستخدمFirefox Profiler (غنية)SVG ثابتQt GUI
الإعدادملف ثنائي واحدأدوات متعددةتثبيت واجهة رسومية
الأفضل لـعبر الأنظمة الأساسية وتفاعليالبرنامج النصي Linux profilingمستخدمو Qt/perf GUI

موارد