این دستور perf-trace است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
perf-trace - ابزار الهام گرفته از strace
خلاصه
پرفیوم رد
پرفیوم رد رکورد
شرح
این دستور رویدادهای مرتبط با هدف را نشان می دهد، در ابتدا syscalls، اما
سایر رویدادهای سیستم مانند خطاهای صفحه، رویدادهای طول عمر وظیفه، رویدادهای زمان بندی و غیره.
این یک ابزار حالت زنده علاوه بر کار با فایلهای perf.data مانند دیگر perf است
ابزار. فایل ها را می توان با استفاده از پرفیوم رکورد دستور دهید، اما جلسه نیاز دارد
شامل رویدادهای raw_syscalls (-e raw_sycalls:*) متناوبا، از سوی دیگر، پرفیوم رد رکورد می توان
به عنوان میانبر برای گنجاندن خودکار رویدادهای raw_sycalls هنگام نوشتن رویدادها استفاده شود
به یک فایل
گزینه های زیر برای ردیابی perf اعمال می شود. گزینه هایی برای پرف ردیابی رکورد در یافت می شود
صفحه مرد رکورد پرف.
OPTIONS
-a، --all-cpus
مجموعه ای در سطح سیستم از همه CPU ها.
-e، --expr
لیست syscalls برای نمایش، در حال حاضر فقط نام syscall. پیشوند با ! همه را نشان می دهد
syscalls اما آنهایی که مشخص شده اند. شاید لازم باشد از آن فرار کنید.
-o، --output=
نام فایل خروجی.
-p، --pid=
رویدادها را در شناسه فرآیند موجود (لیست جدا شده با کاما) ثبت کنید.
-t، --tid=
رویدادها را در شناسه موضوع موجود (لیست جدا شده با کاما) ثبت کنید.
-u، --uid=
رویدادها را در رشتههای متعلق به uid ثبت کنید. نام یا شماره.
--filter-pids=
رویدادها را برای این pids و برای فیلتر کنید رد خود (لیست جدا شده با کاما).
-v، --verbose=
سطح پرحرفی.
-- بدون ارث بردن
وظایف کودک شمارنده را به ارث نمی برند.
-m، --mmap-pages=
تعداد صفحات داده mmap (باید توان دو باشد) یا مشخصات اندازه با پیوست
کاراکتر واحد - B/K/M/G. اندازه به سمت بالا گرد می شود تا نزدیکترین صفحه قدرت دو را داشته باشد
ارزش.
-C، --cpu
نمونه ها را فقط در لیست CPU های ارائه شده جمع آوری کنید. چندین CPU را می توان به عنوان یک ارائه کرد
لیست جدا شده با کاما بدون فاصله: 0,1،0. محدوده CPU ها با -: 2-XNUMX مشخص می شود. که در
حالت هر رشته با حالت ارث بری روشن (پیشفرض)، رویدادها فقط زمانی ثبت میشوند که
thread روی CPU های تعیین شده اجرا می شود. پیشفرض نظارت بر تمام پردازندهها است.
--duration: فقط رویدادهایی را نشان می دهد که مدت زمان آنها بیشتر از NM ms است.
--sched: زمان اجرای موضوع را جمع آوری کنید و در پایان جلسه خلاصه ای ارائه کنید.
-i --input رویدادهای فرآیند از یک فایل داده perf داده شده.
-T --time چاپ تمام مهر زمان و نه زمان نسبت به نمونه اول.
-- Comm
نمایش COMM فرآیند درست در کنار شناسه آن، به طور پیش فرض روشن است، با --no-comm غیرفعال کنید.
-s، --خلاصه
نمایش فقط خلاصه ای از syscalls بر اساس رشته با حداقل، حداکثر و زمان متوسط (در میلی ثانیه)
و stddev نسبی.
-S، --با خلاصه
نمایش همه پیامهای سیستمی و به دنبال آن خلاصهای از رشته با حداقل، حداکثر و میانگین زمان (in
msec) و stddev نسبی.
--tool_stats
نمایش آمار ابزار مانند تعداد دفعاتی که fd→نام مسیر از طریق اتصال به آن کشف شد
باز کردن syscall return + vfs_getname یا از طریق خواندن /proc/pid/fd و غیره.
-F=[همه|دقیقه|مج]، --pf=[همه|دقیقه|مج]
ردیابی خطاهای صفحه به صورت اختیاری، می توانید مشخص کنید که جزئی، بزرگ یا همه را می خواهید
خطاهای صفحه مقدار پیش فرض maj است.
--syscalls
ردیابی تماس های سیستمی این گزینه به صورت پیش فرض فعال است.
--رویداد
ردیابی رویدادهای دیگر، ببینید پرفیوم فهرست برای یک لیست کامل
--proc-map-timeout
هنگام پردازش رشته های از پیش موجود /proc/XXX/mmap، ممکن است زمان زیادی طول بکشد، زیرا
فایل ممکن است بزرگ باشد در چنین مواردی یک تایم اوت لازم است. این گزینه زمان را تنظیم می کند
از حد. مقدار پیش فرض 500 میلی ثانیه است.
خطاهای صفحه
هنگام ردیابی خطاهای صفحه، قالب ردیابی به شرح زیر است:
عیب [ + ] ⇒[ایمیل محافظت شده][1]> (
سطح>).
· min/maj نشان می دهد که آیا رویداد خطا جزئی یا بزرگ است.
· ip.symbol نمادی را برای نشانگر دستورالعمل نشان می دهد (کدی که خطا را ایجاد می کند). اگر
هیچ نماد اشکال زدایی موجود نیست، ردیابی perf IP خام را چاپ می کند.
· addr.dso DSO را برای آدرس خطا نشان می دهد.
· نوع نقشه یکی است d برای نقشه های غیر قابل اجرا یا x برای نقشه های اجرایی؛
· سطح adr یا است k برای کرنل dso یا . برای کاربر dso.
برای وضوح نمادها ممکن است نیاز به نصب نمادهای اشکال زدایی داشته باشید.
لطفاً توجه داشته باشید که مدت زمان در حال حاضر همیشه 0 است و زمان واقعی آن را منعکس نمی کند
برای تقصیر مورد رسیدگی قرار گرفت!
وقتی --verbose مشخص شد، perf trace سعی می کند تمام اطلاعات موجود را برای هر دو IP چاپ کند
و آدرس خطا در قالب dso@symbol[2] + افست.
مثال ها
فقط خطاهای اصلی صفحه را ردیابی کنید:
$ perf trace --no-syscalls -F
ردیابی syscalls، خطاهای صفحه اصلی و جزئی:
$ perf trace -F all
1416.547 (0.000 ms): python/20235 majfault [CRYPTO_push_info_+0x0] => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0@0x61be0 (x.)
همانطور که می بینید، خطای صفحه اصلی در فرآیند پایتون وجود داشت
روال CRYPTO_push_info_ که در جایی در libcrypto.so خطا داشت.
با استفاده از خدمات onworks.net از perf-trace به صورت آنلاین استفاده کنید