'\" t .\" Title: perf-top .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 09/04/2026 .\" Manual: perf Manual .\" Source: perf .\" Language: English .\" .TH "PERF\-TOP" "1" "09/04/2026" "perf" "perf Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" perf-top \- ابزار پروفایل‌سازی سامانه\&. .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fIperf top\fR [\-e | \-\-event=EVENT] [] .fi .SH "توضیحات (DESCRIPTION)" .sp این دستور پروفایلی از شمارنده‌های کارایی را به‌صورت بلادرنگ تولید و نمایش می‌دهد\&. .SH "گزینه‌ها (OPTIONS)" .PP \-a, \-\-all\-cpus .RS 4 گردآوری در سطح کل سامانه\&. (پیش‌فرض) .RE .PP \-c , \-\-count= .RS 4 دورهٔ رویداد برای نمونه‌برداری\&. .RE .PP \-C , \-\-cpu= .RS 4 فقط روی فهرست پردازنده‌های مشخص‌شده پایش انجام شود\&. چندین پردازنده را می‌توان به‌صورت فهرستی با کاما و بدون فاصله مشخص کرد: 0,1\&. بازه‌های پردازنده با \- مشخص می‌شوند: 0\-2\&. مقدار پیش‌فرض پایش تمام پردازنده‌ها است\&. .RE .PP \-d , \-\-delay= .RS 4 تعداد ثانیه‌های تأخیر میان تازه‌سازی‌ها\&. .RE .PP \-e , \-\-event= .RS 4 انتخاب رویداد PMU\&. انتخاب می‌تواند یک نام نمادین رویداد باشد (از \fIperf list\fR برای فهرست کردن تمام رویدادها استفاده کنید) یا یک رویداد خام PMU در قالب rN باشد که در آن N یک مقدار هگزادسیمال است که کدگذاری خام ثبات را مطابق با ساختاربندی ثبات‌های کنترل رویداد که در مدخل‌های /sys/bus/event_source/devices/cpu/format/* شرح داده شده است، نمایش می‌دهد\&. .RE .PP \-\-filter= .RS 4 فیلتر رویداد\&. این گزینه باید پس از یک انتخاب‌گر رویداد (\-e) قرار گیرد\&. برای اطلاع از ساختار نحوی به \fBperf-record\fR(1) مراجعه کنید\&. .RE .PP \-E , \-\-entries= .RS 4 نمایش این تعداد تابع\&. .RE .PP \-f , \-\-count\-filter= .RS 4 فقط نمایش توابعی با رویدادهایی بیش از این مقدار\&. .RE .PP \-\-group\-sort\-idx .RS 4 مرتب‌سازی خروجی بر اساس رویداد در اندیس n در گروه\&. اگر n نامعتبر باشد، بر اساس نخستین رویداد مرتب‌سازی می‌شود\&. می‌تواند از چندین گروه با تعداد رویدادهای مختلف پشتیبانی کند\&. هشدار: این گزینه باید روی رویدادهای گروه‌بندی‌شده استفاده شود\&. .RE .PP \-F , \-\-freq= .RS 4 پروفایل‌سازی در این بسامد\&. برای استفاده از بیشینه بسامد مجاز کنونی، یعنی مقدار موجود در sysctl با عنوان kernel\&.perf_event_max_sample_rate، از \fImax\fR استفاده کنید\&. .RE .PP \-i, \-\-inherit .RS 4 تسک‌های فرزند شمارنده‌ها را به ارث نمی‌برند\&. .RE .PP \-k , \-\-vmlinux= .RS 4 مسیر به vmlinux\&. برای قابلیت حاشیه‌نویسی (annotation) الزامی است\&. .RE .PP \-\-ignore\-vmlinux .RS 4 نادیده‌گرفتن فایل‌های vmlinux\&. .RE .PP \-\-kallsyms= .RS 4 نام مسیر kallsyms .RE .PP \-m , \-\-mmap\-pages= .RS 4 تعداد صفحه‌های دادهٔ mmap (باید توانی از دو باشد) یا مشخص کردن اندازه به بایت به همراه نویسه واحد الصاق‌شده \- B/K/M/G\&. اندازه به سمت نزدیک‌ترین مقدار صفحه با توان دو به بالا گرد می‌شود\&. .RE .PP \-p , \-\-pid= .RS 4 پروفایل‌سازی رویدادها روی شناسهٔ فرایند (PID) موجود (فهرست جداشده با کاما)\&. .RE .PP \-t , \-\-tid= .RS 4 پروفایل‌سازی رویدادها روی شناسهٔ نخ (TID) موجود (فهرست جداشده با کاما)\&. .RE .PP \-u, \-\-uid= .RS 4 ثبت رویدادها در نخ‌های متعلق به uid\&. با نام یا شماره\&. .RE .PP \-r , \-\-realtime= .RS 4 گردآوری داده‌ها با این اولویت بلادرنگ (RT) از نوع SCHED_FIFO\&. .RE .PP \-\-sym\-annotate= .RS 4 حاشیه‌نویسی این نماد\&. .RE .PP \-K, \-\-hide_kernel_symbols .RS 4 پنهان‌سازی نمادهای هسته\&. .RE .PP \-U, \-\-hide_user_symbols .RS 4 پنهان‌سازی نمادهای کاربر\&. .RE .PP \-\-demangle\-kernel .RS 4 خواناسازی نام‌ها (demangle) برای نمادهای هسته\&. .RE .PP \-D, \-\-dump\-symtab .RS 4 تخلیه جدول نمادهای مورد استفاده در پروفایل‌سازی\&. .RE .PP \-v, \-\-verbose .RS 4 پرحرف‌تر بودن (نمایش خطاهای باز کردن شمارنده‌ها و غیره)\&. .RE .PP \-z, \-\-zero .RS 4 صفر کردن تاریخچه در طول به‌روزرسانی‌های نمایش\&. .RE .PP \-s, \-\-sort .RS 4 مرتب‌سازی بر اساس کلید(ها): pid, comm, dso, symbol, parent, srcline, weight, local_weight, abort, in_tx, transaction, overhead, sample, period\&. لطفاً توضیحات \-\-sort را در صفحه راهنمای perf\-report مشاهده کنید\&. .RE .PP \-\-fields= .RS 4 مشخص کردن فیلد خروجی \- چند کلید می‌توانند در قالب CSV مشخص شوند\&. فیلدهای زیر در دسترس هستند: overhead, overhead_sys, overhead_us, overhead_children, sample و period\&. همچنین می‌تواند شامل هر کلید(های) مرتب‌سازی باشد\&. .sp .if n \{\ .RS 4 .\} .nf به‌طور پیش‌فرض، هر کلید مرتب‌سازی که در \-\-field مشخص نشده باشد به‌طور خودکار افزوده خواهد شد\&. .fi .if n \{\ .RE .\} .RE .PP \-n, \-\-show\-nr\-samples .RS 4 نمایش ستونی با تعداد نمونه‌ها\&. .RE.PP \-\-show\-total\-period .RS 4 نمایش ستونی با مجموع دوره‌ها (periods)\&. .RE .PP \-\-dsos .RS 4 تنها نمادهای موجود در این dsoها را در نظر می‌گیرد\&. این گزینه بر درصد ستون overhead تأثیر خواهد گذاشت\&. برای اطلاعات بیشتر \-\-percentage را ببینید\&. .RE .PP \-\-comms .RS 4 تنها نمادهای موجود در این commها را در نظر می‌گیرد\&. این گزینه بر درصد ستون overhead تأثیر خواهد گذاشت\&. برای اطلاعات بیشتر \-\-percentage را ببینید\&. .RE .PP \-\-symbols .RS 4 تنها این نمادها را در نظر می‌گیرد\&. این گزینه بر درصد ستون overhead تأثیر خواهد گذاشت\&. برای اطلاعات بیشتر \-\-percentage را ببینید\&. .RE .PP \-M, \-\-disassembler\-style= .RS 4 تنظیم سبک دیس‌اسمبلر برای objdump\&. .RE .PP \-\-addr2line= .RS 4 مسیر فایل اجرایی addr2line\&. .RE .PP \-\-objdump= .RS 4 مسیر فایل اجرایی objdump\&. .RE .PP \-\-prefix=PREFIX, \-\-prefix\-strip=N .RS 4 حذف N مدخل نخست از نام مسیر فایل‌های سورس در فایل‌های اجرایی و افزودن PREFIX به آن‌ها\&. این امکان را فراهم می‌سازد تا کد منبع کامپایل‌شده روی سیستم‌هایی با ساختار فایل‌سیستم متفاوت نمایش داده شود\&. .RE .PP \-\-source .RS 4 نمایش درهم‌آمیخته کد منبع با کد اسمبلی\&. به‌طور پیش‌فرض فعال است؛ با \-\-no\-source غیرفعال می‌شود\&. .RE .PP \-\-asm\-raw .RS 4 نمایش کدگذاری خام دستورالعمل‌های اسمبلی\&. .RE .PP \-g .RS 4 فعال‌سازی ضبط گراف فراخوانی یا call\-graph (زنجیره پشته/backtrace)\&. .RE .PP \-\-call\-graph [mode,type,min[,limit],order[,key][,branch]] .RS 4 راه‌اندازی و فعال‌سازی ضبط call\-graph (زنجیره پشته/backtrace)؛ این گزینه شامل \-g نیز می‌شود\&. برای جزئیات بخش \-\-call\-graph را در صفحات راهنمای perf\-record و perf\-report ببینید\&. .RE .PP \-\-children .RS 4 انباشت زنجیره فراخوانی (callchain) فرزندان در مدخل والد به نحوی که بتوانند در خروجی نمایش داده شوند\&. خروجی شامل یک ستون جدید «Children» خواهد بود و بر اساس داده‌ها مرتب می‌شود\&. این گزینه نیازمند فعال بودن گزینه \-g/\-\-call\-graph است\&. برای جزئیات بیشتر بخش \(oqoverhead calculation\(cq را ببینید\&. به‌طور پیش‌فرض فعال است؛ با \-\-no\-children غیرفعال می‌شود\&. .RE .PP \-\-max\-stack .RS 4 تنظیم محدودیت عمق پشته هنگام تجزیه زنجیره فراخوانی؛ هر چیزی فراتر از عمق تعیین‌شده نادیده گرفته خواهد شد\&. این یک مصالحه میان از دست رفتن اطلاعات و پردازش سریع‌تر است، به‌ویژه برای بارهای کاری که می‌توانند پشته زنجیره فراخوانی بسیار طولانی داشته باشند\&. .sp .if n \{\ .RS 4 .\} .nf Default: /proc/sys/kernel/perf_event_max_stack when present, 127 otherwise\&. .fi .if n \{\ .RE .\} .RE .PP \-\-ignore\-callees= .RS 4 نادیده گرفتن فراخوانده‌شدگان (callees) تابع یا توابعی که با regex داده‌شده مطابقت دارند\&. این کار موجب جمع‌آوری فراخوانندگان (callers) هر یک از این توابع در یک نقطه از درخت call\-graph می‌شود\&. .RE .PP \-\-percent\-limit .RS 4 عدم نمایش مدخل‌هایی که سربار (overhead) آن‌ها کمتر از این درصد است\&. (پیش‌فرض: 0)\&. .RE .PP \-\-percentage .RS 4 تعیین نحوه نمایش درصد سربار مدخل‌های فیلترشده\&. فیلترها می‌توانند از طریق گزینه‌های \-\-comms، \-\-dsos یا \-\-symbols و عملیات بزرگ‌نمایی در رابط TUI (مانند thread، dso و غیره) اعمال شوند\&. .sp .if n \{\ .RS 4 .\} .nf «relative» بدین معنی است که درصدها تنها نسبت به مدخل‌های فیلترشده محاسبه می‌شوند تا مجموع مدخل‌های نمایش‌داده‌شده همواره ۱۰۰٪ باشد. «absolute» بدین معنی است که مقدار اصلی پیش و پس از اعمال فیلتر حفظ می‌شود\&. .fi .if n \{\ .RE .\} .RE .PP \-w, \-\-column\-widths= .RS 4 اجبار پهنای هر ستون به فهرست ارائه‌شده، برای خوانایی در ترمینال‌های بزرگ\&. 0 به معنای نامحدود بودن است (رفتار پیش‌فرض)\&. .RE .PP \-\-proc\-map\-timeout .RS 4 هنگام پردازش /proc/XXX/mmap برای رشته‌های از پیش موجود، ممکن است زمان زیادی صرف شود، زیرا فایل ممکن است بسیار حجیم باشد\&. در چنین مواردی یک محدودیت زمانی (time out) لازم است\&. این گزینه حد مهلت زمانی را تعیین می‌کند\&. مقدار پیش‌فرض 500 میلی‌ثانیه است\&. .RE .PP \-b, \-\-branch\-any .RS 4 فعال‌سازی نمونه‌برداری پشته شاخه‌های طی‌شده (taken branch)\&. هر نوع شاخه طی‌شده‌ای ممکن است نمونه‌برداری شود\&. این یک میان‌بر برای \-\-branch\-filter any است\&. برای اطلاعات بیشتر \-\-branch\-filter را ببینید\&. .RE .PP \-j, \-\-branch\-filter .RS 4 فعال‌سازی نمونه‌برداری پشته شاخه‌های طی‌شده (taken branch)\&. هر نمونه، مجموعه‌ای از شاخه‌های متوالی طی‌شده را ضبط می‌کند\&. تعداد شاخه‌های ضبط‌شده در هر نمونه به سخت‌افزار، نوع شاخه‌های مورد نظر و کد اجراشده بستگی دارد\&. انتخاب انواع شاخه‌های ضبط‌شده با فعال‌سازی فیلترها امکان‌پذیر است\&. برای فهرست کامل اصلاح‌کننده‌ها لطفاً صفحه راهنمای perf record را ببینید\&. .sp .if n \{\ .RS 4 .\} .nf این گزینه حداقل به یکی از انواع شاخه از میان any، any_call، any_ret، ind_call یا cond نیاز دارد\&. سطوح دسترسی را می‌توان نادیده گرفت، که در این صورت، سطوح دسترسی رویداد مرتبط به فیلتر شاخه اعمال می‌شود\&. هر دو سطح دسترسی هسته (k) و ناظر مجازی‌سازی (hv) نیازمند مجوزهای لازم هستند\&. هنگام نمونه‌برداری از چندین رویداد، نمونه‌برداری پشته شاخه برای همه رویدادهای نمونه‌برداری فعال می‌شود\&. نوع شاخه نمونه‌برداری‌شده برای تمام رویدادها یکسان است\&. فیلترهای گوناگون باید به‌صورت یک فهرست جداشده با کاما مشخص شوند: \-\-branch\-filter any_ret,u,k توجه داشته باشید که این ویژگی ممکن است در همه پردازنده‌ها در دسترس نباشد\&. .fi .if n \{\ .RE .\} .RE .PP \-\-branch\-history .RS 4 افزودن آدرس‌های شاخه‌های طی‌شده نمونه‌برداری‌شده به پشته فراخوانی (callstack)\&. این امکان را فراهم می‌سازد تا مسیری که برنامه تا هر نمونه طی کرده است بررسی شود\&. .RE .PP \-\-raw\-trace .RS 4 عدم استفاده از print fmt یا پلاگین‌ها هنگام نمایش خروجی traceevent\&. .RE .PP \-H, \-\-hierarchy .RS 4 فعال‌سازی خروجی سلسله‌مراتبی\&. در حالت سلسله‌مراتبی، هر کلید مرتب‌سازی نمونه‌ها را بر اساس معیارها گروه‌بندی کرده و سپس آن‌ها را با استفاده از کلید مرتب‌سازی سطح پایین‌تر تقسیم‌بندی می‌کند\&. .sp .if n \{\ .RS 4 .\} .nf برای نمونه، در خروجی عادی: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf report \-s dso,sym # # Overhead Shared Object Symbol # \&.\&.\&.\&.\&.\&.\&.\&. \&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&. \&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&. 50\&.00% [kernel\&.kallsyms] [k] kfunc1 20\&.00% perf [\&.] foo 15\&.00% [kernel\&.kallsyms] [k] kfunc2 10\&.00% perf [\&.] bar 5\&.00% libc\&.so [\&.] libcall .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf در خروجی سلسله‌مراتبی: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf report \-s dso,sym \-\-hierarchy # # Overhead Shared Object / Symbol # \&.\&.\&.\&.\&.\&.\&.\&.\&.\&. \&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&. 65\&.00% [kernel\&.kallsyms] 50\&.00% [k] kfunc1 15\&.00% [k] kfunc2 30\&.00% perf 20\&.00% [\&.] foo 10\&.00% [\&.] bar 5\&.00% libc\&.so 5\&.00% [\&.] libcall .fi .if n \{\ .RE .\} .RE.PP \-\-overwrite .RS 4 این گزینه را برای استفاده از جدیدترین رکوردها فعال کنید که در ماشین‌هایی با تعداد هسته بالا نظیر Knights Landing/Mill مفید است، اما در حال حاضر به‌طور پیش‌فرض غیرفعال است زیرا توقف‌های به کار رفته در این تکنیک منجر به از دست رفتن رویدادهای فراداده‌ای مانند PERF_RECORD_MMAP می‌شود، که سبب می‌گردد \fIperf top\fR قادر به تفکیک و تحلیل نمونه‌ها نباشد و در نتیجه نمونه‌های ناشناخته بسیاری در رابط کاربری نمایش داده شوند\&. اگر در چنین ماشین‌هایی هستید و بار کاری‌ای را پروفایل می‌کنید که نخ‌های کوتاه‌عمر ایجاد نمی‌کند و/یا از عملیات اجرایی mmap زیادی استفاده نمی‌کند، این گزینه را فعال کنید\&. برنامه‌ریزی‌هایی برای برطرف کردن این وضعیت در دست انجام است؛ تا آن زمان، این گزینه به‌طور پیش‌فرض غیرفعال باقی خواهد ماند\&. .RE .PP \-\-force .RS 4 اعتبارسنجی مالکیت انجام نشود\&. .RE .PP \-\-num\-thread\-synthesize .RS 4 تعداد نخ‌هایی که هنگام ترکیب رویدادها برای فرآیندهای موجود اجرا می‌شوند\&. به‌طور پیش‌فرض، تعداد نخ‌ها برابر با تعداد پردازنده‌های برخط (online CPUs) است\&. .RE .PP \-\-namespaces .RS 4 ثبت رویدادهایی از نوع PERF_RECORD_NAMESPACES و نمایش آن با کلید مرتب‌سازی \fIcgroup_id\fR\&. .RE .PP \-G name, \-\-cgroup name .RS 4 پایش تنها در کانتینر (cgroup) با نام "name"\&. این گزینه فقط در حالت per\-cpu در دسترس است\&. سیستم‌فایل cgroup باید متصل (mounted) باشد\&. تمام نخ‌های متعلق به کانتینر "name" هنگامی که روی پردازنده‌های تحت پایش اجرا می‌شوند، پایش خواهند شد\&. می‌توان چندین cgroup مشخص کرد\&. هر cgroup به رویداد متناظر خود اعمال می‌شود؛ یعنی اولین cgroup به اولین رویداد، دومین cgroup به دومین رویداد و به همین ترتیب\&. با استفاده از مواردی نظیر \-G foo,,bar، امکان تعیین یک cgroup خالی (پایش همیشگی) وجود دارد\&. cgroupها باید رویدادهای متناظر داشته باشند، یعنی همیشه به رویدادهایی اشاره می‌کنند که پیش‌تر در خط فرمان تعریف شده‌اند\&. اگر کاربر بخواهد چندین رویداد را برای یک cgroup خاص ردیابی کند، می‌تواند از \fI\-e e1 \-e e2 \-G foo,foo\fR یا تنها از \fI\-e e1 \-e e2 \-G foo\fR استفاده کند\&. .RE .PP \-\-all\-cgroups .RS 4 ثبت رویدادهایی از نوع PERF_RECORD_CGROUP و نمایش آن با کلید مرتب‌سازی \fIcgroup\fR\&. .RE .PP \-\-switch\-on EVENT_NAME .RS 4 در نظر گرفتن رویدادها تنها پس از یافتن این رویداد\&. .sp .if n \{\ .RS 4 .\} .nf برای نمونه: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf یافتن محلی که بسته‌های broadcast در آن پردازش می‌شوند: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf probe \-L icmp_rcv .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf درج یک probe در آن محل: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf probe icmp_rcv:59 .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf اجرای perf top و درخواست از آن برای در نظر گرفتن رویدادهای cycles تنها هنگامی که یک بسته broadcast می‌رسد. این کار منویی با دو مدخل نمایش می‌دهد و با رسیدن یک بسته broadcast شمارش را آغاز می‌کند: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf top \-e cycles,probe:icmp_rcv \-\-switch\-on=probe:icmp_rcv .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf به عنوان روشی دیگر می‌توان یک گروه درخواست کرد تا دو ستون بالاسری (overhead) نمایان شود؛ اولی برای cycles و دومی برای رویداد switch\-on\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf top \-e \*(Aq{cycles,probe:icmp_rcv}\*(Aq \-\-switch\-on=probe:icmp_rcv .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf این روش برای اندازه‌گیری بار کاری پس از پایان فاز مقداردهی اولیه مفید است؛ یعنی درج یک perf probe در آن نقطه و استفاده از مثال‌های بالا با جایگزینی probe:icmp_rcv با probe پس از مقداردهی اولیه\&. .fi .if n \{\ .RE .\} .RE .PP \-\-switch\-off EVENT_NAME .RS 4 توقف در نظر گرفتن رویدادها پس از یافتن این رویداد\&. .RE .PP \-\-show\-on\-off\-events .RS 4 نمایش رویدادهای \-\-switch\-on/off نیز\&. این گزینه در حال حاضر در \fIperf top\fR تأثیری ندارد، اما احتمالاً در حالت \-\-group پیش‌فرض بر عدم نمایش رویدادهای switch\-on/off قرار خواهد گرفت و چنانچه به‌جز رویدادهای off/on تنها یک رویداد دیگر وجود داشته باشد، مستقیماً به مرورگر هیستوگرام منتقل می‌شود؛ دقیقاً همانند عملکرد \fIperf top\fR هنگامی که هیچ رویدادی به‌طور صریح مشخص نشده است\&. .RE .PP \-\-stitch\-lbr .RS 4 نمایش نمودار فراخوانی با LBRهای پیوندخورده (stitched LBRs) که ممکن است نمودار فراخوانی کامل‌تری ارائه دهد\&. این گزینه باید همراه با ضبط \-\-call\-graph lbr استفاده شود\&. به‌طور پیش‌فرض غیرفعال است\&. در شرایط متداول با سرریز پشته فراخوانی (call stack overflows)، این ویژگی می‌تواند پشته‌های فراخوانی بهتری نسبت به خروجی پیش‌فرض پشته فراخوانی lbr بازسازی کند\&. با این حال این روش کاملاً بدون خطا نیست\&. مواردی ممکن است رخ دهد که در اثر تطابق‌های نادرست، پشته‌های فراخوانی اشتباهی ایجاد شوند\&. محدودیت‌های شناخته‌شده شامل مواردی مانند مدیریت استثناها در setjmp/longjmp است که در آن‌ها فراخوانی‌ها/بازگشت‌ها تطابق نخواهند داشت\&. .RE .PP \-\-pfm\-events events .RS 4 انتخاب یک رویداد PMU با استفاده از نحو libpfm4 (ببینید: \m[blue]\fBhttp://perfmon2\&.sf\&.net\fR\m[]) شامل پشتیبانی از فیلترهای رویداد\&. برای مثال \fI\-\-pfm\-events inst_retired:any_p:u:c=1:i\fR\&. می‌توان با استفاده از جداکننده کاما بیش از یک رویداد را به این گزینه ارسال کرد\&. رویدادهای سخت‌افزاری و رویدادهای سخت‌افزاری عمومی را نمی‌توان با یکدیگر ترکیب کرد\&. مورد دوم باید همراه با گزینه \-e استفاده شود\&. گزینه \-e و این گزینه را می‌توان با هم ترکیب و استفاده کرد\&. رویدادها را می‌توان با استفاده از نمادگذاری {} گروه‌بندی کرد\&. .RE.SH "کلیدهای تعاملی (INTERACTIVE PROMPTING KEYS)" .PP [d] .RS 4 تأخیر در بازآوری نمایش\&. .RE .PP [e] .RS 4 تعداد مدخل‌ها برای نمایش\&. .RE .PP [E] .RS 4 رویداد برای نمایش هنگامی که چندین شمارنده فعال هستند\&. .RE .PP [f] .RS 4 فیلتر نمایش پروفایل (تعداد برخورد >=)\&. .RE .PP [F] .RS 4 فیلتر نمایش حاشیه‌نویسی (درصد از کل >=)\&. .RE .PP [s] .RS 4 حاشیه‌نویسی نماد\&. .RE .PP [S] .RS 4 توقف حاشیه‌نویسی، بازگشت به نمایش کامل پروفایل\&. .RE .PP [K] .RS 4 پنهان‌سازی نمادهای هسته (kernel)\&. .RE .PP [U] .RS 4 پنهان‌سازی نمادهای کاربر (user)\&. .RE .PP [z] .RS 4 تغییر وضعیت صفر کردن شمارش رویدادها در بازآوری‌های نمایش\&. .RE .PP [qQ] .RS 4 خروج\&. .RE .sp فشردن هر کلید نگاشت‌نشده‌ای منویی را نشان داده و منتظر ورودی می‌ماند\&. .SH "محاسبه سربار (OVERHEAD CALCULATION)" .sp سربار CPU می‌تواند در دو ستون به صورت \fIChildren\fR و \fISelf\fR نمایش داده شود، هنگامی که perf زنجیره‌های فراخوانی (callchains) را جمع‌آوری می‌کند (و ستون‌های متناظر \fIWall\fR برای سربار زمان واقعی (wall\-clock))\&. سربار \fIself\fR به سادگی با جمع مقادیر تمام دوره‌های (period) یک مدخل \- معمولاً یک تابع (نماد) \- محاسبه می‌شود\&. این همان مقداری است که perf به‌طور سنتی نمایش می‌دهد و مجموع تمام مقادیر سربار \fIself\fR باید ۱۰۰٪ باشد\&. .sp سربار \fIchildren\fR از طریق جمع مقادیر تمام دوره‌های توابع فرزند محاسبه می‌شود تا بتواند کل سربار توابع سطح بالاتر را نشان دهد، حتی اگر خود آن‌ها مستقیماً کار زیادی انجام ندهند\&. منظور از \fIChildren\fR در اینجا توابعی هستند که از تابعی دیگر (والد) فراخوانی شده‌اند\&. .sp ممکن است گیج‌کننده باشد که مجموع تمام مقادیر سربار \fIchildren\fR از ۱۰۰٪ فراتر می‌رود، زیرا هر یک از آن‌ها خود تجمیعی از سربار \fIself\fR توابع فرزندشان هستند\&. اما با فعال بودن این ویژگی، کاربران می‌توانند دریابند که کدام تابع بیشترین سربار را دارد، حتی اگر نمونه‌ها میان فرزندان پراکنده شده باشند\&. .sp مثال زیر را در نظر بگیرید؛ سه تابع مانند زیر وجود دارد\&. .sp .if n \{\ .RS 4 .\} .nf \&.ft C void foo(void) { /* do something */ } void bar(void) { /* do something */ foo(); } int main(void) { bar() return 0; } \&.ft .fi .if n \{\ .RE .\} .sp در این حالت \fIfoo\fR فرزند \fIbar\fR است، و \fIbar\fR فرزند بی‌واسطه \fImain\fR می‌باشد، بنابراین \fIfoo\fR نیز فرزند \fImain\fR به شمار می‌رود\&. به عبارت دیگر، \fImain\fR والد \fIfoo\fR و \fIbar\fR است، و \fIbar\fR والد \fIfoo\fR می‌باشد\&. .sp فرض کنید تمامی نمونه‌ها فقط در \fIfoo\fR و \fIbar\fR ثبت شده‌اند\&. هنگامی که با زنجیره فراخوانی ثبت شود، خروجی در حالت معمول (فقط سربار self) در perf report چیزی شبیه به زیر را نشان خواهد داد: .sp .if n \{\ .RS 4 .\} .nf \&.ft C Overhead Symbol \&.\&.\&.\&.\&.\&.\&.\&. \&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&. 60\&.00% foo | \-\-\- foo bar main __libc_start_main 40\&.00% bar | \-\-\- bar main __libc_start_main \&.ft .fi .if n \{\ .RE .\} .sp هنگامی که گزینه \-\-children فعال باشد، مقادیر سربار \fIself\fR توابع فرزند (یعنی \fIfoo\fR و \fIbar\fR) برای محاسبه سربار \fIchildren\fR به والدین اضافه می‌شوند\&. در این حالت گزارش ممکن است به صورت زیر نمایش داده شود: .sp .if n \{\ .RS 4 .\} .nf \&.ft C Children Self Symbol \&.\&.\&.\&.\&.\&.\&.\&. \&.\&.\&.\&.\&.\&.\&.\&. \&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&. 100\&.00% 0\&.00% __libc_start_main | \-\-\- __libc_start_main 100\&.00% 0\&.00% main | \-\-\- main __libc_start_main 100\&.00% 40\&.00% bar | \-\-\- bar main __libc_start_main 60\&.00% 60\&.00% foo | \-\-\- foo bar main __libc_start_main \&.ft .fi .if n \{\ .RE .\} .sp در خروجی بالا، سربار \fIself\fR تابع \fIfoo\fR (۶۰٪) به سربار \fIchildren\fR مربوط به \fIbar\fR، \fImain\fR و \fI__libc_start_main\fR اضافه شد\&. به همین ترتیب، سربار \fIself\fR تابع \fIbar\fR (۴۰٪) به سربار \fIchildren\fR مربوط به \fImain\fR و \fI\e_\e_libc_start_main\fR افزوده شد\&. .sp بنابراین \fI\e_\e_libc_start_main\fR و \fImain\fR ابتدا نمایش داده می‌شوند، چرا که دارای سربار \fIchildren\fR یکسانی (۱۰۰٪) هستند (اگرچه دارای سربار \fIself\fR صفر می‌باشند) و والد توابع \fIfoo\fR و \fIbar\fR هستند\&. .sp از نسخه v3\&.16 سربار \fIchildren\fR به‌طور پیش‌فرض نمایش داده می‌شود و خروجی بر اساس مقادیر آن مرتب می‌گردد\&. سربار \fIchildren\fR با مشخص کردن گزینه \-\-no\-children در خط فرمان یا با افزودن \fIreport\&.children = false\fR یا \fItop\&.children = false\fR در فایل پیکربندی perf غیرفعال می‌شود\&..SH "همچنین ببینید (SEE ALSO)" .sp \fBperf-stat\fR(1), \fBperf-list\fR(1), \fBperf-report\fR(1)