'\" t .\" Title: perf-record .\" 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: Persian .\" .TH "PERF\-RECORD" "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-record \- اجرای یک دستور و ضبط پروفایل عملکرد آن در perf\&.data .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fIperf record\fR [\-e | \-\-event=EVENT] [\-a] \fIperf record\fR [\-e | \-\-event=EVENT] [\-a] \-\- [] .fi .SH "توضیحات (DESCRIPTION)" .sp این دستور یک فرمان را اجرا کرده و پروفایل شمارنده‌های عملکردی آن را بدون نمایش هیچ خروجی، در perf\&.data ذخیره و گردآوری می‌کند\&. .sp سپس این فایل را می‌توان بعداً با استفاده از \fIperf report\fR بررسی کرد\&. .SH "گزینه‌ها (OPTIONS)" .PP \&... .RS 4 هر دستوری که بتوانید در یک پوسته مشخص کنید\&. .RE .PP \-e, \-\-event= .RS 4 انتخاب رویداد PMU\&. انتخاب می‌تواند شامل موارد زیر باشد: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک نام نمادین رویداد (برای مشاهده فهرست تمام رویدادها از \fIperf list\fR استفاده کنید) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک رویداد خام PMU در قالب rN که در آن N یک مقدار در مبنای ۱۶ (هگزادسیمال) است که کدگذاری خام ثبات را با ساختار ثبات‌های کنترل رویداد نمایش می‌دهد، همان‌گونه که توسط مدخل‌ها در /sys/bus/event_source/devices/cpu/format/* شرح داده شده است\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک رویداد PMU نمادین یا خام به همراه یک دونقطه اختیاری و فهرستی از اصلاح‌کننده‌های رویداد، مانند cpu\-cycles:p\&. برای جزئیات در مورد اصلاح‌کننده‌های رویداد، صفحه راهنمای \fBperf-list\fR(1) را ببینید\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک رویداد PMU که به صورت نمادین شکل گرفته است مانند \fIpmu/param1=0x3,param2/\fR که در آن \fIparam1\fR، \fIparam2\fR و غیره به عنوان قالب‌هایی برای PMU در /sys/bus/event_source/devices//format/* تعریف شده‌اند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک رویداد با ساختار نمادین مانند \fIpmu/config=M,config1=N,config3=K/\fR .sp .if n \{\ .RS 4 .\} .nf که در آن M، N و K اعدادی (در قالب دهدهی، هگز یا اوکتال) هستند\&. مقادیر مجاز برای هر یک از \*(Aqconfig\*(Aq، \*(Aqconfig1\*(Aq و \*(Aqconfig2\*(Aq توسط مدخل‌های متناظر در /sys/bus/event_source/devices//format/* مشخص می‌شوند\&. پارامترهای param1 و param2 به عنوان قالب‌هایی برای PMU در این مسیر تعریف شده‌اند: /sys/bus/event_source/devices//format/* .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf همچنین برخی پارامترها وجود دارند که در \&.\&.\&.//format/* تعریف نشده‌اند\&. این پارامترها می‌توانند برای بازنویسی مقادیر پیکربندی پیش‌فرض برای هر رویداد استفاده شوند\&. در اینجا برخی از پارامترهای رایج آورده شده است: \- \*(Aqperiod\*(Aq: تنظیم دوره نمونه‌برداری رویداد \- \*(Aqfreq\*(Aq: تنظیم فرکانس نمونه‌برداری رویداد \- \*(Aqtime\*(Aq: غیرفعال/فعال‌سازی برچسب زمانی\&. مقادیر مجاز عبارتند از ۱ برای فعال کردن برچسب زمانی و ۰ برای غیرفعال کردن آن\&. مقدار پیش‌فرض ۱ است\&. \- \*(Aqcall\-graph\*(Aq: غیرفعال/فعال‌سازی گراف فراخوانی\&. رشته‌های مجاز عبارتند از "fp" برای حالت FP،‏ "dwarf" برای حالت DWARF،‏ "lbr" برای حالت LBR و "no" برای غیرفعال کردن گراف فراخوانی\&. \- \*(Aqstack\-size\*(Aq: اندازه پشته کاربر برای حالت dwarf \- \*(Aqname\*(Aq : نام رویداد تعریف‌شده توسط کاربر\&. نقل‌قول تکی (\*(Aq) می‌تواند برای نادیده‌گیری نمادها در نام جهت جلوگیری از تجزیه توسط پوسته و ابزار استفاده شود مانند این: name=\e\*(AqCPU_CLK_UNHALTED\&.THREAD:cmask=0x1\e\*(Aq\&. \- \*(Aqaux\-output\*(Aq: تولید رکوردهای AUX به جای رویدادها\&. این مورد نیازمند این است که یک رویداد ناحیه AUX نیز مشخص شده باشد\&. \- \*(Aqaux\-action\*(Aq: مقدار "pause" یا "resume" برای متوقف ساختن یا ازسرگیری یک رویداد ناحیه AUX (سرگروه) هنگام وقوع این رویداد\&. مقدار "start\-paused" روی خود رویداد ناحیه AUX، آن را در وضعیت متوقف‌شده آغاز می‌کند\&. \- \*(Aqaux\-sample\-size\*(Aq: تنظیم اندازه نمونه برای نمونه‌برداری ناحیه AUX\&. اگر گزینه \*(Aq\-\-aux\-sample\*(Aq استفاده شده باشد، مقدار aux\-sample\-size=0 را برای غیرفعال کردن نمونه‌برداری ناحیه AUX برای این رویداد تنظیم کنید\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf برای پارامترهای بیشتر به صفحه راهنمای perf\-list(1) مراجعه کنید\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf نکته: اگر کاربر به طور صریح گزینه‌هایی را تنظیم کند که با پارامترها در تضاد باشند، مقدار تنظیم‌شده توسط پارامترها نادیده گرفته شده و بازنویسی خواهد شد\&. .fi .if n \{\ .RE .\}.sp .if n \{\ .RS 4 .\} .nf همچنین پارامترهای پیکربندی ویژهٔ درایور PMU در مسیر \&.\&.\&.//format/* تعریف نشده‌اند\&. هر پارامتر پیکربندی که پیش از آن حرف \*(Aq@\*(Aq بیاید، در فضای کاربری تفسیر نشده و مستقیماً به درایور PMU فرستاده می‌شود\&. برای نمونه: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf record \-e some_event/@cfg1,@cfg2=config/ \&.\&.\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf باعث می‌شود \*(Aqcfg1\*(Aq و \*(Aqcfg2=config\*(Aq برای پردازش بیشتر به درایور PMU مرتبط با رویداد ارسال شوند\&. هیچ محدودیتی روی چیستی پارامترهای پیکربندی وجود ندارد، تا زمانی که معنای آن‌ها توسط درایور PMU درک و پشتیبانی شود\&. .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک رویداد نقطه توقف سخت‌افزاری به شکل \fI\emem:addr[/len][:access]\fR که در آن addr نشانی حافظه‌ای است که می‌خواهید در آن توقف ایجاد شود\&. access نوع دسترسی به حافظه (خواندن، نوشتن، اجرا) است که می‌تواند به این صورت مشخص شود: \fI\emem:addr[:[r][w][x]]\fR\&. پارامتر len محدوده، یعنی تعداد بایت‌هایی از addr مشخص‌شده است که نقطه توقف پوشش خواهد داد\&. اگر می‌خواهید دسترسی‌های خواندن\-نوشتن را در 0x1000 پروفایل کنید، کافی است مقدار زیر را تنظیم کنید: \fImem:0x1000:rw\fR\&. اگر می‌خواهید دسترسی‌های نوشتن را در بازهٔ [0x1000~1008) پروفایل کنید، کافی است مقدار زیر را تنظیم کنید: \fImem:0x1000/8:w\fR\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} گروهی از رویدادها که با یک جفت آکولاد احاطه شده‌اند ("{event1,event2,\&...}")\&. هر رویداد با کاما جدا می‌شود و برای جلوگیری از تفسیر توسط شل (shell) باید کل گروه را درون علامت نقل‌قول قرار داد\&. همچنین برای مشاهدهٔ رویدادهای گروه به‌صورت هم‌زمان، باید از گزینهٔ \-\-group در دستور "perf report" استفاده کنید\&. .RE .RE .PP \-\-filter= .RS 4 فیلتر رویداد\&. این گزینه باید بعد از یک انتخاب‌کنندهٔ رویداد (\-e) قرار گیرد\&. اگر رویداد یک tracepoint باشد، رشتهٔ فیلتر توسط هسته تجزیه خواهد شد\&. اگر رویداد یک PMU برای ردگیری سخت‌افزاری باشد (مانند Intel PT یا CoreSight)، به عنوان یک فیلتر نشانی پردازش می‌شود\&. در غیر این صورت به معنای یک فیلتر عمومی با استفاده از BPF خواهد بود که می‌تواند برای هر نوع رویدادی اعمال شود\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} فیلترهای tracepoint .sp .if n \{\ .RS 4 .\} .nf در مورد tracepointها، گزینه‌های چندگانهٔ \*(Aq\-\-filter\*(Aq با استفاده از \*(Aq&&\*(Aq با یکدیگر ترکیب می‌شوند\&. .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} فیلترهای نشانی .sp .if n \{\ .RS 4 .\} .nf یک PMU ردگیری سخت‌افزاری، قابلیت خود برای پذیرش تعدادی فیلتر نشانی را با مشخص کردن یک مقدار غیرصفر در مسیر /sys/bus/event_source/devices//nr_addr_filters اعلام می‌کند\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf فیلترهای نشانی ساختار زیر را دارند: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf filter|start|stop|tracestop [/ ] [@] .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf که در آن: \- \*(Aqfilter\*(Aq: محدوده‌ای را مشخص می‌کند که ردگیری خواهد شد\&. \- \*(Aqstart\*(Aq: نشانی‌ای را مشخص می‌کند که ردگیری از آن آغاز می‌شود\&. \- \*(Aqstop\*(Aq: نشانی‌ای را مشخص می‌کند که ردگیری در آن متوقف می‌شود\&. \- \*(Aqtracestop\*(Aq: محدوده‌ای را مشخص می‌کند که ردگیری درون آن متوقف خواهد شد\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf پارامتر نام فایل شیء (object file)، و آفست کد مورد نظر برای ردگیری در آن فایل، و اندازهٔ محدوده برای ردگیری است\&. فیلترهای \*(Aqstart\*(Aq و \*(Aqstop\*(Aq نیازی به تعیین ندارند\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf اگر هیچ فایل شیئی مشخص نشده باشد، هسته پیش‌فرض فرض می‌شود، که در این حالت نشانی شروع باید یک نشانی معتبر از حافظهٔ جاری هسته باشد\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf همچنین می‌تواند با مشخص کردن نام یک نماد (symbol) تعیین شود\&. اگر نام نماد یکتا نباشد، می‌توان با درج #n رفع ابهام کرد؛ جایی که \*(Aqn\*(Aq نماد n\-اُم را به ترتیب نشانی انتخاب می‌کند\&. به‌طور متناوب، #0، #g یا #G فقط یک نماد سراسری (global) را انتخاب می‌کنند\&. همچنین می‌تواند با تعیین نام یک نماد مشخص شود، که در این حالت اندازه تا انتهای آن نماد محاسبه خواهد شد\&. برای فیلترهای \*(Aqfilter\*(Aq و \*(Aqtracestop\*(Aq، اگر حذف شده باشد و یک نماد باشد، اندازه تا پایان آن نماد محاسبه می‌گردد\&. .fi .if n \{\ .RE .\}.sp .if n \{\ .RS 4 .\} .nf اگر حذف شود و برابر با \*(Aq*\*(Aq باشد، نقطه شروع و اندازه از اولین و آخرین نمادها محاسبه خواهند شد، یعنی برای ردگیری کل فایل\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf اگر نام نمادها (یا \*(Aq*\*(Aq) ارائه شوند، باید با نویسه‌های فاصله احاطه گردند\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf فیلتر ارائه‌شده به هسته لزوماً با آنچه وارد شده است یکسان نیست\&. برای مشاهده فیلتری که ارسال شده است، از گزینه \-v استفاده کنید\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf اگر ناحیه ردگیری در یک نگاشت واحد قرار نداشته باشد، هسته ممکن است قادر به پیکربندی آن نباشد\&. رویدادهای MMAP (یا /proc//maps) را می‌توان بررسی کرد تا امکان‌پذیر بودن آن مشخص شود\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf فیلترهای چندگانه را می‌توان با فاصله یا کاما از یکدیگر جدا کرد\&. .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} فیلترهای bpf .sp .if n \{\ .RS 4 .\} .nf یک فیلتر BPF می‌تواند به داده‌های نمونه دسترسی داشته باشد و بر اساس داده‌ها تصمیم‌گیری کند\&. کاربران برای استفاده از فیلتر BPF باید نوع نمونه مناسبی را تنظیم کنند\&. فیلترهای BPF نیازمند دسترسی ریشه (root) هستند\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf فیلد داده نمونه می‌تواند با حروف کوچک مشخص شود\&. فیلترهای چندگانه را می‌توان با کاما از هم جدا کرد\&. برای نمونه: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf \-\-filter \*(Aqperiod > 1000, cpu == 1\*(Aq یا \-\-filter \*(Aqmem_op == load || mem_op == store, mem_lvl > l1\*(Aq .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf فیلتر نخست تنها نمونه‌هایی با period بزرگ‌تر از 1000 و شماره CPU برابر با 1 را می‌پذیرد\&. فیلتر دوم هر یک از عملیات‌های حافظه load و store را می‌پذیرد، اما سطح حافظه آن باید بالاتر از L1 باشد\&. از آن‌جا که فیلدهای mem_op و mem_lvl از data_source (حافظه) می‌آیند، فقط با رویدادهایی کار می‌کنند که فیلد data_source را مقداردهی کرده باشند\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf همچنین کاربر باید جمع‌آوری آن اطلاعات را درخواست کند (در حالت بالا با گزینه \-d)\&. در غیر این صورت، پیام زیر نمایش داده خواهد شد\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf $ sudo perf record \-e cycles \-\-filter \*(Aqmem_op == load\*(Aq Error: cycles event does not have PERF_SAMPLE_DATA_SRC Hint: please add \-d option to perf record\&. failed to set filter "BPF" on event cycles with 22 (Invalid argument) .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf در اصل عبارت فیلتر BPF به این صورت است: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf (("," | "||") )* .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf عبارت می‌تواند یکی از موارد زیر باشد: ip, id, tid, pid, cpu, time, addr, period, txn, weight, phys_addr, code_pgsz, data_pgsz, weight1, weight2, weight3, ins_lat, retire_lat, p_stage_cyc, mem_op, mem_lvl, mem_snoop, mem_remote, mem_lock, mem_dtlb, mem_blk, mem_hops, uid, gid .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf عملگر می‌تواند یکی از عملگرهای زیر باشد: ==, !=, >, >=, <, <=, & .fi .if n \{\ .RE .\}.sp .if n \{\ .RS 4 .\} .nf مقدار می‌تواند یکی از موارد زیر باشد: (برای هر عبارت) na, load, store, pfetch, exec (برای mem_op) l1, l2, l3, l4, cxl, io, any_cache, lfb, ram, pmem (برای mem_lvl) na, none, hit, miss, hitm, fwd, peer (برای mem_snoop) remote (برای mem_remote) na, locked (برای mem_locked) na, l1_hit, l1_miss, l2_hit, l2_miss, any_hit, any_miss, walk, fault (برای mem_dtlb) na, by_data, by_addr (برای mem_blk) hops0, hops1, hops2, hops3 (برای mem_hops) .fi .if n \{\ .RE .\} .RE .RE .PP \-\-exclude\-perf .RS 4 رویدادهای صادرشده توسط خود perf را ضبط نمی‌کند\&. این گزینه باید بعد از یک انتخاب‌گر رویداد (\-e) بیاید که رویداد(های) نقطهٔ ردیابی (tracepoint) را انتخاب می‌کند\&. این گزینه عبارت فیلتر \fIcommon_pid != $PERFPID\fR را به فیلترها اضافه می‌کند\&. اگر \fI\-\-filter\fR دیگری وجود داشته باشد، عبارت فیلتر جدید با استفاده از \fI&&\fR با آن‌ها ترکیب خواهد شد\&. .RE .PP \-\-latency .RS 4 جمع‌آوری داده برای پروفایل‌سازی تأخیر (latency) را فعال می‌کند\&. برای پروفایل مبتنی بر تأخیر از perf report \-\-latency استفاده کنید\&. .RE .PP \-a, \-\-all\-cpus .RS 4 جمع‌آوری در سطح کل سیستم از تمام CPUها (پیش‌فرض در صورتی که هیچ هدفی مشخص نشده باشد)\&. .RE .PP \-p, \-\-pid= .RS 4 ضبط رویدادها روی شناسه فرایند (PID) موجود (فهرست جداشده با کاما)\&. .RE .PP \-t, \-\-tid= .RS 4 ضبط رویدادها روی شناسه نخ (TID) موجود (فهرست جداشده با کاما)\&. این گزینه همچنین توارث را به‌طور پیش‌فرض غیرفعال می‌کند\&. با افزودن \-\-inherit آن را فعال کنید\&. .RE .PP \-u, \-\-uid= .RS 4 ضبط رویدادها در نخ‌های متعلق به uid\&. نام یا شماره شناسه\&. .RE .PP \-r, \-\-realtime= .RS 4 جمع‌آوری داده با این اولویت بیدرنگ (RT) SCHED_FIFO\&. .RE .PP \-\-no\-buffering .RS 4 جمع‌آوری داده بدون بافرسازی\&. .RE .PP \-c, \-\-count= .RS 4 دوره تناوب رویداد برای نمونه‌برداری\&. .RE .PP \-o, \-\-output= .RS 4 نام فایل خروجی\&. .RE .PP \-i, \-\-no\-inherit .RS 4 تسک‌های فرزند شمارنده‌ها را به ارث نمی‌برند\&. .RE .PP \-F, \-\-freq= .RS 4 پروفایل‌سازی در این بسامد (فرکانس)\&. برای استفاده از حداکثر فرکانس مجاز فعلی، یعنی مقداری که در sysctl به نشانی kernel\&.perf_event_max_sample_rate قرار دارد، از \fImax\fR استفاده کنید\&. نرخ نمونه‌برداری تا حداکثر فرکانس مجاز فعلی تعدیل (throttle) می‌شود\&. گزینه \-\-strict\-freq را ببینید\&. .RE .PP \-\-strict\-freq .RS 4 در صورتی که فرکانس مشخص‌شده قابل استفاده نباشد، با خطا پایان می‌یابد\&. .RE .PP \-m, \-\-mmap\-pages= .RS 4 تعداد صفحات داده mmap (باید توانی از دو باشد) یا تعیین اندازه بر حسب بایت به همراه نویسه واحد پیوست‌شده \- B/K/M/G\&. اندازه به نزدیک‌ترین مقدار صفحه از توان‌های دو به بالا گرد می‌شود\&. با افزودن یک کاما، می‌توان یک پارامتر اضافی با همان معنای به‌کاررفته برای نواحی mmap معمولی را برای ناحیه ردیابی AUX مشخص کرد\&. .RE .PP \-g .RS 4 ضبط گراف فراخوانی (زنجیره پشته/backtrace) را هم برای فضای هسته و هم برای فضای کاربر فعال می‌کند\&. .RE .PP \-\-call\-graph .RS 4 راه‌اندازی و فعال‌سازی ضبط گراف فراخوانی (زنجیره پشته/backtrace)؛ متضمن گزینه \-g است\&. مقدار پیش‌فرض "fp" است (برای فضای کاربر)\&. .sp .if n \{\ .RS 4 .\} .nf روش بازپیچی (unwinding) مورد استفاده برای فضای هسته وابسته به unwinder استفاده‌شده در پیکربندی فعال هسته است، یعنی CONFIG_UNWINDER_FRAME_POINTER (fp) یا CONFIG_UNWINDER_ORC (orc) .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf هر گزینه‌ای که در اینجا مشخص شود، روش مورد استفاده برای فضای کاربر را تعیین می‌کند\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf گزینه‌های معتبر عبارتند از "fp" (اشاره‌گر فریم / frame pointer)، "dwarf" (اطلاعات فریم فراخوانی DWARF\*(Aqs CFI \- Call Frame Information) یا "lbr" (امکان سخت‌افزاری Last Branch Record)\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf در برخی سیستم‌ها که باینری‌ها با \-\-fomit\-frame\-pointer مربوط به gcc کامپایل شده‌اند، استفاده از روش "fp" گراف‌های فراخوانی نامعتبر تولید می‌کند؛ در این صورت اگر "dwarf" در دسترس باشد (ابزارهای perf به کتابخانه libunwind یا libdw پیوند داده شده باشند)، باید از آن استفاده شود\&. استفاده از روش "lbr" نیازی به گزینه‌های کامپایلر ندارد\&. این روش گراف‌های فراخوانی را از طریق ثبات‌های سخت‌افزاری LBR تولید می‌کند\&. محدودیت اصلی آن این است که فقط روی پلتفرم‌های جدیدتر اینتل مانند Haswell در دسترس است\&. این روش فقط می‌تواند زنجیره فراخوانی کاربر را به دست آورد و به‌طور همزمان با نمونه‌برداری پشته شاخه کار نمی‌کند\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf هنگامی که ضبط "dwarf" استفاده می‌شود، perf در زمان نمونه‌برداری رونوشت پشته (کاربر) را نیز ثبت می‌کند\&. اندازه پیش‌فرض رونوشت پشته ۸۱۹۲ (بایت) است\&. کاربر می‌تواند اندازه را با افزودن آن پس از کاما تغییر دهد، مانند "\-\-call\-graph dwarf,4096"\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf هنگامی که ضبط "fp" استفاده می‌شود، perf به‌طور پیش‌فرض تلاش می‌کند مدخل‌های پشته را تا سقف تعداد مشخص‌شده در sysctl\&.kernel\&.perf_event_max_stack ذخیره کند\&. کاربر می‌تواند این تعداد را با ارسال آن پس از کاما تغییر دهد، مانند "\-\-call\-graph fp,32"\&. .fi .if n \{\ .RE .\}.sp .if n \{\ .RS 4 .\} .nf همچنین می‌توان از "defer" به همراه "fp" (مانند "\-\-call\-graph fp,defer") برای فعال‌سازی callchain معوق کاربر استفاده کرد که هنگام بازگشت ریسه به فضای کاربر، callchainهای فضای کاربر را جمع‌آوری خواهد کرد\&. .fi .if n \{\ .RE .\} .RE .PP \-q, \-\-quiet .RS 4 هیچ هشدار یا پیامی چاپ نمی‌کند؛ برای اسکریپت‌نویسی مفید است\&. .RE .PP \-v, \-\-verbose .RS 4 اطلاعات مفصل‌تری نمایش می‌دهد (نمایش خطاهای باز کردن شمارنده، و غیره)\&. .RE .PP \-s, \-\-stat .RS 4 تعداد رخدادها را به ازای هر ریسه (per\-thread) ضبط می‌کند\&. از آن به همراه \fIperf report \-T\fR برای مشاهده مقادیر استفاده کنید\&. .RE .PP \-d, \-\-data .RS 4 آدرس‌های مجازی نمونه را ضبط می‌کند\&. مستلزم \-\-sample\-mem\-info و \-\-data\-mmap است\&. .RE .PP \-\-phys\-data .RS 4 آدرس‌های فیزیکی نمونه را ضبط می‌کند\&. .RE .PP \-\-data\-page\-size .RS 4 اندازهٔ صفحه دادهٔ مربوط به نشانی داده‌های نمونه‌برداری‌شده را ضبط می‌کند\&. .RE .PP \-\-code\-page\-size .RS 4 اندازهٔ صفحه نشانی کد (ip) نمونه‌برداری‌شده را ضبط می‌کند .RE .PP \-T, \-\-timestamp .RS 4 برچسب‌های زمانی نمونه را ضبط می‌کند\&. برای مثال، از آن همراه با \fIperf report \-D\fR برای مشاهدهٔ برچسب‌های زمانی استفاده کنید\&. .RE .PP \-P, \-\-period .RS 4 دورهٔ تناوب نمونه (sample period) را ضبط می‌کند\&. .RE .PP \-\-sample\-cpu .RS 4 پردازندهٔ (CPU) نمونه را ضبط می‌کند\&. .RE .PP \-\-sample\-identifier .RS 4 شناسهٔ نمونه را ضبط می‌کند، یعنی بیت PERF_SAMPLE_IDENTIFIER تنظیم‌شده در عضو sample_type از آرگومان struct perf_event_attr در فراخوانی سیستمی perf_event_open\&. .RE .PP \-\-sample\-mem\-info .RS 4 اطلاعات منبع دادهٔ نمونه را برای عملیات حافظه ضبط می‌کند\&. این ویژگی نیازمند پشتیبانی سخت‌افزاری است و ممکن است تنها روی رویدادهای خاصی کار کند\&. اگر مطمئن نیستید، لطفاً استفاده از \fIperf mem record\fR را به جای آن در نظر بگیرید\&. .RE .PP \-n, \-\-no\-samples .RS 4 نمونه‌برداری انجام نمی‌دهد\&. .RE .PP \-R, \-\-raw\-samples .RS 4 رکوردهای خام نمونه را از تمام شمارنده‌های بازشده جمع‌آوری می‌کند (پیش‌فرض برای شمارنده‌های tracepoint)\&. .RE .PP \-C, \-\-cpu .RS 4 نمونه‌ها را فقط روی فهرست پردازنده‌های ارائه‌شده جمع‌آوری می‌کند\&. چند پردازنده می‌توانند به صورت فهرستی جداشده با کاما و بدون فاصله ارائه شوند: 0,1\&. بازه‌های پردازنده با \- مشخص می‌شوند: 0\-2\&. در حالت per\-thread با حالت وراثت فعال (پیش‌فرض)، نمونه‌ها تنها زمانی ثبت می‌شوند که ریسه روی پردازنده‌های تعیین‌شده اجرا شود\&. حالت پیش‌فرض، نظارت بر تمام پردازنده‌ها است\&. .RE .sp وظایف فضای کاربر می‌توانند بین پردازنده‌ها جابه‌جا شوند، بنابراین هنگام ردیابی پردازنده‌های انتخاب‌شده، یک رویداد صوری (dummy event) برای دنبال کردن رویدادهای جانبی (sideband) برای تمام پردازنده‌ها ایجاد می‌شود\&. .PP \-B, \-\-no\-buildid .RS 4 شناسه‌های ساخت (build id) باینری‌ها را در فایل‌های perf\&.data ذخیره نمی‌کند\&. این کار از پس‌پردازش پس از ضبط صرف‌نظر می‌کند، که گاهی اوقات گام نهایی در فرایند ضبط را به دلیل نیاز به پردازش همه رویدادها در جستجوی رکوردهای mmap طولانی می‌کند\&. نکته منفی این است که در صورت بازسازی محلی یا ارتقای باینری‌های بار کاریِ استفاده‌شده هنگام ضبط، ممکن است نمادها را اشتباه شناسایی کند، زیرا تنها کلید موجود در این حالت مسیر فایل (pathname) است\&. همچنین می‌توانید متغیر پیکربندی "record\&.build\-id" را روی \*(Aqskip تنظیم کنید تا این رفتار به صورت دائمی اعمال شود\&. .RE .PP \-N, \-\-no\-buildid\-cache .RS 4 حافظه نهان buildid را به‌روزرسانی نمی‌کند\&. این کار در شرایطی که اطلاعات درون فایل perf\&.data (شامل buildidها) کافی است، مقداری از سربار را کاهش می‌دهد\&. همچنین می‌توانید متغیر پیکربندی "record\&.build\-id" را روی \fIno\-cache\fR تنظیم کنید تا اثر یکسانی داشته باشد\&. .RE .PP \-G name,\&..., \-\-cgroup name,\&... .RS 4 تنها درون کانتینر (cgroup) با نام "name" نظارت می‌کند\&. این گزینه تنها در حالت per\-cpu در دسترس است\&. سیستم‌فایل cgroup باید سوار (mount) شده باشد\&. تمام ریسه‌های متعلق به کانتینر "name" هنگامی که روی پردازنده‌های تحت نظارت اجرا شوند، پایش می‌شوند\&. می‌توان چندین cgroup مشخص کرد\&. هر cgroup به رویداد متناظر اعمال می‌شود، یعنی cgroup اول به رویداد اول، cgroup دوم به رویداد دوم و به همین ترتیب\&. ارائهٔ یک cgroup خالی (نظارت در تمام زمان) با استفاده از مثلاً \-G foo,,bar امکان‌پذیر است\&. ساختارهای cgroup باید رویدادهای متناظر داشته باشند، یعنی همیشه به رویدادهایی که پیش‌تر در خط فرمان تعریف شده‌اند اشاره می‌کنند\&. اگر کاربر بخواهد چندین رویداد را برای یک cgroup خاص ردیابی کند، می‌تواند از \fI\-e e1 \-e e2 \-G foo,foo\fR یا صرفاً از \fI\-e e1 \-e e2 \-G foo\fR استفاده کند\&. .RE .sp اگر بخواهید برای مثال \fIcycles\fR را هم برای یک cgroup و هم در سطح کل سیستم نظارت کنید، این خط فرمان می‌تواند استفاده شود: \fIperf stat \-e cycles \-G cgroup_name \-a \-e cycles\fR\&. .PP \-b, \-\-branch\-any .RS 4 نمونه‌برداری پشتهٔ انشعاب‌های طی‌شده (taken branch stack) را فعال می‌کند\&. هر نوع انشعاب طی‌شده‌ای ممکن است نمونه‌برداری شود\&. این یک میانبر برای \-\-branch\-filter any است\&. برای اطلاعات بیشتر \-\-branch\-filter را ببینید\&. .RE .PP \-j, \-\-branch\-filter .RS 4 نمونه‌برداری پشتهٔ انشعاب‌های طی‌شده را فعال می‌کند\&. هر نمونه یک سری از انشعاب‌های طی‌شدهٔ متوالی را ثبت می‌کند\&. تعداد انشعاب‌های ثبت‌شده با هر نمونه به سخت‌افزار زیرین، نوع انشعاب‌های مورد نظر و کد اجراشده بستگی دارد\&. انتخاب انواع انشعاب‌های ثبت‌شده با فعال‌سازی فیلترها امکان‌پذیر است\&. فیلترهای زیر تعریف شده‌اند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} any: هر نوع انشعاب .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} any_call: هرگونه فراخوانی تابع یا فراخوانی سیستمی .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} any_ret: هرگونه بازگشت از تابع یا بازگشت از فراخوانی سیستمی .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ind_call: هرگونه انشعاب غیرمستقیم .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ind_jmp: هرگونه پرش غیرمستقیم .RE.sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} call: فراخوانی‌های مستقیم، شامل فراخوانی‌های دور (far) (به/از هسته) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} u: فقط زمانی که مقصد انشعاب در سطح کاربر باشد .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} k: فقط زمانی که مقصد انشعاب در هسته باشد .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} hv: فقط زمانی که مقصد در سطح هایپروایزر باشد .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} in_tx: فقط زمانی که مقصد در یک تراکنش سخت‌افزاری باشد .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} no_tx: فقط زمانی که مقصد در یک تراکنش سخت‌افزاری نباشد .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} abort_tx: فقط زمانی که مقصد، لغو یک تراکنش سخت‌افزاری باشد .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} cond: انشعاب‌های شرطی .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} stack: ذخیره پشته فراخوانی .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} no_flags: عدم ذخیره پرچم‌های انشعاب، مانند پیش‌بینی، پیش‌بینی نادرست و غیره .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} no_cycles: عدم ذخیره چرخه‌های انشعاب .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} hw_index: ذخیره نمایه سخت‌افزاری انشعاب .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} save_type: ذخیره نوع انشعاب در حین نمونه‌برداری در صورتی که فایل باینری بعداً در دسترس نباشد. برای پلتفرم‌های دارای پشتیبانی از Intel Arch LBR (کلاینت‌های 12th\-Gen+ یا سرورهای 4th\-Gen Xeon+)، هنگامی که نمونه‌برداری پشته انشعاب‌های طی‌شده فعال باشد، ذخیره نوع انشعاب بدون قید و شرط فعال می‌شود\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} priv: ذخیره وضعیت سطح دسترسی در حین نمونه‌برداری در صورتی که فایل باینری بعداً در دسترس نباشد .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} counter: ذخیره رخدادهای رویداد از زمان آخرین ورودی انشعاب\&. در حال حاضر، این ویژگی تنها توسط پردازنده‌های جدیدتر، مانند پلتفرم‌های Intel Sierra Forest و بعد از آن پشتیبانی می‌شود\&. در صورت استفاده روی هسته یا پردازنده‌های پشتیبانی‌نشده، صدور خطا مورد انتظار است\&. .RE .sp این گزینه حداقل به یکی از انواع انشعاب از میان any، any_call، any_ret، ind_call، cond نیاز دارد\&. سطوح دسترسی می‌توانند نادیده گرفته شوند، که در این حالت، سطوح دسترسی رویداد مرتبط روی فیلتر انشعاب اعمال می‌شوند\&. هر دو سطح دسترسی هسته (k) و هایپروایزر (hv) مشروط به داشتن مجوزها هستند\&. هنگام نمونه‌برداری روی چندین رویداد، نمونه‌برداری پشته انشعاب برای همه رویدادهای نمونه‌برداری فعال می‌شود\&. نوع انشعاب نمونه‌برداری‌شده برای همه رویدادها یکسان است\&. فیلترهای مختلف باید به‌صورت یک فهرست جداشده با کاما مشخص شوند: \-\-branch\-filter any_ret,u,k توجه داشته باشید که این ویژگی ممکن است روی همه پردازنده‌ها موجود نباشد\&. .RE .PP \-W, \-\-weight .RS 4 فعال‌سازی نمونه‌برداری وزن‌دار\&. یک وزن اضافی به ازای هر نمونه ثبت می‌شود و می‌تواند با کلیدهای مرتب‌سازی weight و local_weight نمایش داده شود\&. این ویژگی در حال حاضر برای رویدادهای لغو TSX و برخی رویدادهای حافظه در حالت دقیق (precise mode) روی پردازنده‌های جدید Intel کار می‌کند\&. .RE .PP \-\-namespaces .RS 4 ثبت رویدادهای از نوع PERF_RECORD_NAMESPACES\&. این گزینه کلید مرتب‌سازی \fIcgroup_id\fR را فعال می‌کند\&. .RE.PP \-\-all\-cgroups .RS 4 رویدادهای از نوع PERF_RECORD_CGROUP را ضبط می‌کند\&. این گزینه کلید مرتب‌سازی \fIcgroup\fR را فعال می‌کند\&. .RE .PP \-\-transaction .RS 4 پرچم‌های تراکنش را برای رویدادهای مرتبط با تراکنش ضبط می‌کند\&. .RE .PP \-\-per\-thread .RS 4 از نگاشت‌های حافظه (mmap) به ازای هر رشته (per\-thread) استفاده می‌کند\&. به‌طور پیش‌فرض نگاشت‌های به ازای هر پردازنده (per\-cpu) ایجاد می‌شوند\&. این گزینه آن رفتار را لغو کرده و از نگاشت‌های به ازای هر رشته استفاده می‌کند\&. یک اثر جانبی این کار این است که توارث به‌طور خودکار غیرفعال می‌شود\&. در صورت ترکیب با گزینه‌های \-a یا \-C، گزینه \-\-per\-thread نادیده گرفته شده و یک هشدار نمایش داده می‌شود\&. .RE .PP \-D, \-\-delay= .RS 4 پس از شروع برنامه، قبل از اندازه‌گیری به اندازه چند میلی‌ثانیه صبر می‌کند (\-1: شروع با رویدادهای غیرفعال)، یا رویدادها را فقط برای بازه‌های مشخص‌شده‌ای از میلی‌ثانیه فعال می‌کند (برای مثال \-D 10\-20,30\-40 یعنی ۱۰ میلی‌ثانیه صبر کن، ۱۰ میلی‌ثانیه فعال کن، ۱۰ میلی‌ثانیه صبر کن، ۱۰ میلی‌ثانیه فعال کن و سپس متوقف شو)\&. توجه داشته باشید که به تأخیر انداختن فعال‌سازی رویدادها برای فیلتر کردن فاز راه‌اندازی اولیه برنامه، که اغلب بسیار متفاوت است، مفید می‌باشد\&. .RE .PP \-I, \-\-intr\-regs .RS 4 وضعیت ماشین (ثبات‌ها) را هنگام وقفه، یعنی در زمان سرریز شمارنده برای هر نمونه، ثبت می‌کند\&. فهرست ثبات‌های ثبت‌شده به معماری بستگی دارد\&. این گزینه به‌طور پیش‌فرض غیرفعال است\&. می‌توان ثبات‌ها را جهت نمونه‌برداری با استفاده از نام‌های نمادین آن‌ها انتخاب کرد، مثلاً در x86،‏ ax،‏ si\&. برای فهرست کردن ثبات‌های موجود از \-\-intr\-regs=\e? استفاده کنید\&. برای مشخص کردن نام ثبات‌ها، یک فهرست جداشده با کاما مانند \-\-intr\-regs=ax,bx ارائه دهید\&. فهرست ثبات‌ها وابسته به معماری است\&. .RE .PP \-\-user\-regs .RS 4 مشابه \-I است، اما ثبات‌های فضای کاربری را در زمان نمونه‌برداری ثبت می‌کند\&. برای فهرست کردن ثبات‌های کاربری موجود از \-\-user\-regs=\e? استفاده کنید\&. .RE .PP \-\-running\-time .RS 4 زمان اجرا و زمان فعال بودن را برای رویدادهای خواندن (:S) ضبط می‌کند\&. .RE .PP \-k, \-\-clockid .RS 4 شناسه ساعت (clock id) را برای استفاده در فیلدهای زمانی گوناگون در رکوردهای perf_event_type تنظیم می‌کند\&. به clock_gettime() مراجعه کنید\&. به‌ویژه CLOCK_MONOTONIC و CLOCK_MONOTONIC_RAW پشتیبانی می‌شوند؛ برخی رویدادها همچنین ممکن است اجازه استفاده از CLOCK_BOOTTIME، CLOCK_REALTIME و CLOCK_TAI را بدهند\&. .RE .PP \-S, \-\-snapshot .RS 4 حالت تصویر لحظه‌ای (Snapshot Mode) ردگیری ناحیه AUX را انتخاب می‌کند\&. این گزینه فقط همراه با یک رویداد ردگیری ناحیه AUX معتبر است\&. در صورت تمایل، پارامترهای مشخصی برای گرفتن تصویر لحظه‌ای را می‌توان در رشته‌ای که پس از این گزینه می‌آید تعیین کرد: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fIe\fR: گرفتن یک تصویر لحظه‌ای نهایی هنگام خروج؛ تضمین می‌کند که حداقل یک تصویر لحظه‌ای در فایل خروجی وجود دارد؛ .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} : در صورتی که PMU از آن پشتیبانی کند، اندازه تصویر لحظه‌ای مورد نظر را تعیین می‌کند\&. .RE .RE .sp در Snapshot Mode داده‌های ردگیری تنها زمانی ثبت می‌شوند که سیگنال SIGUSR2 دریافت شود و در صورت تعیین گزینه \fIe\fR فوق، هنگام خروج نیز ثبت صورت می‌گیرد\&. .PP \-\-aux\-sample[=OPTIONS] .RS 4 نمونه‌برداری از ناحیه AUX را انتخاب می‌کند\&. حداقل یکی از رویدادهای انتخاب‌شده توسط گزینه \-e باید یک رویداد ناحیه AUX باشد\&. نمونه‌هایی روی سایر رویدادها ایجاد خواهند شد که حاوی داده‌های حاصل از ناحیه AUX هستند\&. اندازه نمونه را می‌توان به‌صورت اختیاری مشخص کرد، در غیر این صورت مقدار پیش‌فرض آن 4KiB است\&. .RE .PP \-\-proc\-map\-timeout .RS 4 هنگام پردازش /proc/XXX/mmap برای رشته‌های از پیش موجود، ممکن است زمان زیادی طول بکشد، زیرا ممکن است این فایل بسیار حجیم باشد\&. در چنین مواردی به یک محدودیت زمانی (timeout) نیاز است\&. این گزینه حد وقفه زمانی را تعیین می‌کند\&. مقدار پیش‌فرض ۵۰۰ میلی‌ثانیه است\&. .RE .PP \-\-switch\-events .RS 4 رویدادهای تعویض زمینه (context switch) را ضبط می‌کند، یعنی رویدادهایی از نوع PERF_RECORD_SWITCH یا PERF_RECORD_SWITCH_CPU_WIDE\&. در برخی موارد (مانند Intel PT،‏ CoreSight یا Arm SPE) رویدادهای تعویض به‌طور خودکار فعال می‌شوند، که می‌توان با گزینه \-\-no\-switch\-events از آن جلوگیری کرد\&. .RE .PP \-\-vmlinux=PATH .RS 4 مسیر vmlinux حاوی اطلاعات اشکال‌زدایی (debuginfo) را مشخص می‌کند\&. (زمانی فعال است که BPF prologue روشن باشد) .RE .PP \-\-buildid\-all .RS 4 شناسه ساخت (build\-id) تمام DSOها را بدون توجه به این‌که واقعاً فراخوانی/استفاده شده‌اند یا خیر ضبط می‌کند\&. .RE .PP \-\-buildid\-mmap .RS 4 گزینه موروثی ضبط build\-id در رویدادهای نگاشت (map events) که اکنون پیش‌فرض است\&. رفتاری کاملاً یکسان با \-\-no\-buildid دارد\&. با \-\-no\-buildid\-mmap غیرفعال می‌شود\&. .RE .PP \-\-aio[=n] .RS 4 از بلوک کنترل در حالت نوشتن ناهمگام ردگیری (Posix AIO) استفاده می‌کند (پیش‌فرض: ۱، حداکثر: ۴)\&. حالت ناهمگام تنها در صورتی پشتیبانی می‌شود که ابزار Perf با کتابخانه libc پیوند داده شده باشد که پیاده‌سازی API مربوط به Posix AIO را ارائه می‌دهد\&. .RE .PP \-\-affinity=mode .RS 4 ماسک وابستگی (affinity mask) رشته خواننده ردگیری را بر اساس سیاست تعیین‌شده توسط مقدار \fImode\fR تنظیم می‌کند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} node \- ماسک وابستگی رشته روی ماسک پردازنده گره NUMA مربوط به بافر mmap در حال پردازش تنظیم می‌شود .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} cpu \- ماسک وابستگی رشته روی پردازنده بافر mmap در حال پردازش تنظیم می‌شود .RE .RE .PP \-\-mmap\-flush=number .RS 4 حداقل تعداد بایت‌هایی را که از صفحات داده mmap استخراج شده و برای خروجی پردازش می‌شوند مشخص می‌کند\&. می‌توان این تعداد را با پسوندهای B/K/M/G مشخص کرد\&. .RE .sp حداکثر مقدار مجاز، یک‌چهارم اندازه صفحات داده mmap شده است\&. .sp مقدار پیش‌فرض این گزینه ۱ بایت است، به این معنی که هر بار رشته نویسنده خروجی داده‌های جدیدی در بافر mmap شده پیدا کند، داده‌ها استخراج شده، احتمالاً فشرده می‌شوند (\-z) و در خروجی، perf\&.data یا لوله (pipe) نوشته می‌شوند\&. .sp تکه‌های داده بزرگ‌تر در مقایسه با تکه‌های کوچک‌تر به‌طور موثرتری فشرده می‌شوند، بنابراین استخراج تکه‌های بزرگ‌تر از صفحات داده mmap از دیدگاه کاهش اندازه خروجی ترجیح داده می‌شود\&. .sp همچنین در برخی موارد اجرای تعداد کمتری فراخوان سیستمی (syscall) نوشتن خروجی با اندازه داده بزرگ‌تر می‌تواند زمان کمتری نسبت به اجرای تعداد بیشتری فراخوان سیستمی نوشتن با اندازه داده کوچک‌تر ببرد و در نتیجه بار اضافی (overhead) پروفایل‌سازی در زمان اجرا را کاهش دهد\&. .PP \-z, \-\-compression\-level[=n] .RS 4 ردگیری فشرده‌شده را با استفاده از سطح مشخص‌شده n تولید می‌کند (پیش‌فرض: ۱ \- سریع‌ترین فشرده‌سازی، ۲۲ \- کم‌حجم‌ترین ردگیری) .RE .PP \-\-all\-kernel .RS 4 تمام رویدادهای استفاده‌شده را برای اجرا در فضای هسته (kernel space) پیکربندی می‌کند\&. .RE .PP \-\-all\-user .RS 4 تمام رویدادهای استفاده‌شده را برای اجرا در فضای کاربری (user space) پیکربندی می‌کند\&. .RE .PP \-\-kernel\-callchains .RS 4 زنجیره‌های فراخوانی (callchain) را فقط از فضای هسته جمع‌آوری می‌کند؛ یعنی این گزینه perf_event_attr\&.exclude_callchain_user را روی ۱ قرار می‌دهد\&. .RE .PP \-\-user\-callchains .RS 4 زنجیره‌های فراخوانی را فقط از فضای کاربری جمع‌آوری می‌کند؛ یعنی این گزینه perf_event_attr\&.exclude_callchain_kernel را روی ۱ قرار می‌دهد\&. .RE .sp از هر دو گزینه \-\-kernel\-callchains و \-\-user\-callchains به‌طور هم‌زمان استفاده نکنید، در غیر این صورت هیچ زنجیره فراخوانی جمع‌آوری نخواهد شد\&. .sp \-\-timestamp\-filename برچسب زمان (timestamp) را به نام فایل خروجی اضافه می‌کند\&. .PP \-\-timestamp\-boundary .RS 4 مرز برچسب زمان (زمان اولین/آخرین نمونه‌ها) را ضبط می‌کند\&. .RE.PP \-\-switch\-output[=mode] .RS 4 تولید چندین فایل perf\&.data، دارای پیشوند برچسب زمانی، با جابه‌جایی به یک فایل جدید بر اساس مقدار \fImode\fR: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} "signal" \- هنگام دریافت یک SIGUSR2 (مقدار پیش‌فرض) یا .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \- هنگام رسیدن به آستانه اندازه؛ انتظار می‌رود اندازه، عددی همراه با نویسه واحد متصل باشد \- B/K/M/G .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\}