'\" t .\" Title: perf-mem .\" 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\-MEM" "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-mem \- پروفایل‌سازی دسترسی‌های حافظه .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fIperf mem\fR [] (record [] | report) .fi .SH "توضیحات (DESCRIPTION)" .sp دستور "perf mem record" یک فرمان را اجرا کرده و داده‌های مربوط به عملیات حافظه را از آن جمع‌آوری و در perf\&.data ذخیره می‌کند\&. گزینه‌های perf record نیز پذیرفته شده و مستقیماً اعمال می‌شوند\&. .sp دستور "perf mem report" نتیجه را نمایش می‌دهد\&. این دستور perf report را با مجموعهٔ مناسبی از گزینه‌ها فراخوانی می‌کند تا نمایهٔ دسترسی به حافظه را نمایش دهد\&. به‌طور پیش‌فرض، از بارگذاری‌ها (loads) و ذخیره‌سازی‌ها (stores) نمونه‌برداری می‌شود\&. از گزینهٔ \-t برای محدود کردن به بارگذاری‌ها یا ذخیره‌سازی‌ها استفاده کنید\&. .sp توجه داشته باشید که در سیستم‌های Intel، تاخیر حافظهٔ گزارش‌شده تاخیر بهره‌برداری (use\-latency) است، نه تاخیر خالص بارگذاری (یا تاخیر ذخیره‌سازی)\&. تاخیر بهره‌برداری علاوه بر تاخیر زیرسیستم حافظه، شامل هرگونه تاخیر صف‌بندی خط‌لوله (pipeline queuing) نیز می‌شود\&. .sp در Arm64 این ابزار از SPE برای نمونه‌برداری از عملیات بارگذاری و ذخیره‌سازی استفاده می‌کند، بنابراین به پشتیبانی سخت‌افزار و هسته نیاز است\&. برای راهنمای راه‌اندازی به \fBperf-arm-spe\fR(1) مراجعه کنید\&. به دلیل ماهیت آماری نمونه‌برداری SPE، از تمامی عملیات حافظه نمونه‌برداری نخواهد شد\&. .sp در AMD این ابزار از IBS Op PMU برای نمونه‌برداری از عملیات بارگذاری\-ذخیره‌سازی (load\-store) استفاده می‌کند\&. .SH "گزینه‌های عمومی (COMMON OPTIONS)" .PP \-f, \-\-force .RS 4 عدم اعتبارسنجی مالکیت\&. .RE .PP \-t, \-\-type= .RS 4 انتخاب نوع عملیات حافظه: load یا store (پیش‌فرض: load,store)\&. .RE .PP \-v, \-\-verbose .RS 4 توضیحات بیشتر و پرگویی (نمایش خطاهای باز کردن شمارنده و غیره)\&. .RE .PP \-p, \-\-phys\-data .RS 4 ثبت/گزارش آدرس‌های فیزیکی نمونه‌ها\&. .RE .PP \-\-data\-page\-size .RS 4 ثبت/گزارش اندازهٔ صفحهٔ (page size) آدرس داده‌های نمونه\&. .SH "گزینه‌های RECORD (RECORD OPTIONS)" .PP \&... .RS 4 هر فرمانی که بتوانید در شل مشخص کنید\&. .RE .PP \-e, \-\-event .RS 4 انتخاب‌گر رویداد\&. از \fIperf mem record \-e list\fR برای فهرست کردن رویدادهای موجود استفاده کنید\&. .RE .PP \-K, \-\-all\-kernel .RS 4 پیکربندی تمامی رویدادهای استفاده‌شده برای اجرا در فضای هسته (kernel space)\&. .RE .PP \-U, \-\-all\-user .RS 4 پیکربندی تمامی رویدادهای استفاده‌شده برای اجرا در فضای کاربری (user space)\&. .RE .PP \-\-ldlat .RS 4 مشخص کردن تاخیر مورد نظر برای رویداد بارگذاری‌ها (loads)\&. در پردازنده‌های Intel،‏ Arm64 و برخی پردازنده‌های AMD پشتیبانی می‌شود\&. در سایر معماری‌ها نادیده گرفته می‌شود\&. .sp .if n \{\ .RS 4 .\} .nf در پردازنده‌های پشتیبانی‌شدهٔ AMD: \- فایل /sys/bus/event_source/devices/ibs_op/caps/ldlat حاوی \*(Aq1\*(Aq است\&. \- مقادیر تاخیر پشتیبانی‌شده از 128 تا 2048 (هر دو شامل می‌شوند) هستند\&. \- مقدار تاخیری که مضربی از 128 باشد بار سربار پروفایل‌سازی اندکی کمتری در مقایسه با سایر مقادیر به همراه دارد\&. \- فیلتر کردن تاخیر بارگذاری به‌طور پیش‌فرض غیرفعال است\&. .fi .if n \{\ .RE .\} .RE.SH "گزینه‌های گزارش (REPORT OPTIONS)" .PP \-i, \-\-input= .RS 4 نام فایل ورودی\&. .RE .PP \-C, \-\-cpu= .RS 4 تنها پایش بر روی فهرست CPUهای ارائه‌شده\&. چندین پردازنده را می‌توان به صورت یک فهرست جداشده با کاما و بدون فاصله مشخص کرد: 0,1\&. بازه‌های پردازنده‌ها با \- مشخص می‌شوند، مانند 0\-2\&. حالت پیش‌فرض، پایش تمام پردازنده‌ها (CPUs) است\&. .RE .PP \-D, \-\-dump\-raw\-samples .RS 4 تخلیه نمونه‌های خام رمزگشایی‌شده روی صفحه در قالبی با تجزیه آسان، به صورت یک نمونه در هر خط\&. .RE .PP \-s, \-\-sort= .RS 4 گروه‌بندی نتیجه بر اساس کلید(های) ارائه‌شده \- چندین کلید می‌توانند در قالب CSV مشخص شوند\&. کلیدهای مختص به نمونه‌های حافظه عبارتند از: symbol_daddr، symbol_iaddr، dso_daddr، locked، tlb، mem، snoop، dcacheline، phys_daddr، data_page_size، blocked\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} symbol_daddr: نام نماد داده‌ای که در زمان نمونه‌برداری روی آن عملیات انجام می‌گرفته است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} symbol_iaddr: نام نماد کدی که در زمان نمونه‌برداری در حال اجرا بوده است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} dso_daddr: نام کتابخانه یا ماژول حاوی داده‌ای که در زمان نمونه‌برداری روی آن عملیات انجام می‌گرفته است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} locked: آیا گذرگاه (bus) در زمان نمونه‌برداری قفل بوده است یا خیر .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} tlb: نوع دسترسی tlb برای داده در زمان نمونه‌برداری .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} mem: نوع دسترسی حافظه برای داده در زمان نمونه‌برداری .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} snoop: نوع snoop (در صورت وجود) برای داده در زمان نمونه‌برداری .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} dcacheline: خط حافظه نهان (cacheline) که آدرس داده در زمان نمونه‌برداری روی آن قرار داشته است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} phys_daddr: آدرس فیزیکی داده‌ای که در زمان نمونه‌برداری روی آن عملیات انجام می‌گرفته است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} data_page_size: اندازه صفحه داده مربوط به داده‌ای که در زمان نمونه‌برداری روی آن عملیات انجام می‌گرفته است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} blocked: دلیل دسترسی بارگذاری مسدودشده برای داده در زمان نمونه‌برداری .sp .if n \{\ .RS 4 .\} .nf و کلیدهای مرتب‌سازی پیش‌فرض به local_weight، mem، sym، dso، symbol_daddr، dso_daddr، snoop، tlb، locked، blocked، local_ins_lat تغییر می‌یابند\&. .fi .if n \{\ .RE .\} .RE .RE .PP \-F, \-\-fields= .RS 4 مشخص کردن فیلد خروجی \- چندین کلید می‌توانند در قالب CSV مشخص شوند\&. لطفاً برای جزئیات به \fBperf-report\fR(1) مراجعه کنید\&. .sp .if n \{\ .RS 4 .\} .nf علاوه بر فیلدهای پیش‌فرض، \*(Aqperf mem report\*(Aq فیلدهای زیر را برای تفکیک دوره‌های نمونه‌برداری ارائه می‌دهد\&. .fi .if n \{\ .RE .\} .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} op: عملیات در دستورالعمل نمونه (load، store، prefetch، \&...) .RE.sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} cache: مکانی در حافظهٔ نهان پردازنده (L1، L2، \&...) که نمونه با آن برخورد (hit) داشته است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} mem: مکانی در حافظه یا دیگر جاهایی که نمونه با آن برخورد داشته است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} dtlb: مکانی در Data TLB (سطوح L1، L2) که نمونه با آن برخورد داشته است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} snoop: نتیجهٔ snoop برای دسترسی داده‌های نمونه‌برداری‌شده .sp .if n \{\ .RS 4 .\} .nf لطفاً برای نکات و هشدارهای مهم به بخش OUTPUT FIELD SELECTION مراجعه کنید\&. .fi .if n \{\ .RE .\} .RE .RE .PP \-T, \-\-type\-profile .RS 4 نمایش نتیجهٔ پروفایل نوع‌داده به‌جای نمادهای کد\&. این گزینه نیازمند اطلاعات اشکال‌زدایی است و کلیدهای مرتب‌سازی پیش‌فرض را به این موارد تغییر می‌دهد: mem, snoop, tlb, type\&. .RE .PP \-U, \-\-hide\-unresolved .RS 4 تنها نمایش مدخل‌هایی که به یک نماد تفکیک شده‌اند\&. .RE .PP \-x, \-\-field\-separator= .RS 4 مشخص کردن جداکنندهٔ فیلد مورد استفاده هنگام تخلیهٔ نمونه‌های خام (گزینهٔ \-D)\&. به‌طور پیش‌فرض، جداکننده نویسهٔ فاصله است\&. .RE .sp علاوه بر این، برای report تمامی گزینه‌های perf report معتبر هستند، و برای record تمامی گزینه‌های perf record\&. .SH "محاسبهٔ سربار (OVERHEAD CALCULATION)" .sp برخلاف \fBperf-report\fR(1) که سربار را از دورهٔ نمونه‌برداری واقعی محاسبه می‌کند، سربار perf\-mem با استفاده از وزن نمونه (sample weight) محاسبه می‌شود\&. برای مثال، دو نمونه در فایل perf\&.data وجود دارد که هر دو دارای دورهٔ نمونه‌برداری یکسانی هستند، اما یک نمونه دارای وزن 180 و دیگری دارای وزن 20 است: .sp .if n \{\ .RS 4 .\} .nf $ perf script \-F period,data_src,weight,ip,sym 100000 629080842 |OP LOAD|LVL L3 hit|\&.\&.\&. 20 7e69b93ca524 strcmp 100000 1a29081042 |OP LOAD|LVL RAM hit|\&.\&.\&. 180 ffffffff82429168 memcpy .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf $ perf report \-F overhead,symbol 50% [\&.] strcmp 50% [k] memcpy .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf $ perf mem report \-F overhead,symbol 90% [k] memcpy 10% [\&.] strcmp .fi .if n \{\ .RE .\}.SH "انتخاب فیلدهای خروجی (OUTPUT FIELD SELECTION)" .sp دستور "perf mem report" تعدادی فیلد خروجی جدید مختص اطلاعات منبع داده در نمونه اضافه می‌کند\&. برخی از آن‌ها هم‌نام با کلیدهای مرتب‌سازی موجود ("mem" و "snoop") هستند\&. بنابراین برخلاف سایر فیلدها و کلیدهای مرتب‌سازی، هنگام استفاده با \-F/\-\-fields یا \-s/\-\-sort رفتار متفاوتی خواهند داشت\&. .sp استفاده از این دو به عنوان فیلدهای خروجی، تمام نمونه‌ها را با یکدیگر تجمیع کرده و تفکیک آن‌ها را نمایش می‌دهد\&. .sp .if n \{\ .RS 4 .\} .nf $ perf mem report \-F mem,snoop \&.\&.\&. # \-\-\-\-\-\- Memory \-\-\-\-\-\-\- \-\-\- Snoop \-\-\-\- # RAM Uncach Other HitM Other # \&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&. \&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&. # 3\&.5% 0\&.0% 96\&.5% 25\&.1% 74\&.9% .fi .if n \{\ .RE .\} .sp اما استفاده از همین نام‌ها برای کلیدهای مرتب‌سازی، نمونه‌ها را برای هر نوع به طور جداگانه تجمیع خواهد کرد\&. .sp .if n \{\ .RS 4 .\} .nf $ perf mem report \-s mem,snoop # Overhead Samples Memory access Snoop # \&.\&.\&.\&.\&.\&.\&.\&. \&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&. \&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&. \&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&. # 47\&.99% 1509 L2 hit N/A 25\&.08% 338 core, same node Any cache hit HitM 10\&.24% 54374 N/A N/A 6\&.77% 35938 L1 hit N/A 6\&.39% 101 core, same node Any cache hit N/A 3\&.50% 69 RAM hit N/A 0\&.03% 158 LFB/MAB hit N/A 0\&.00% 2 Uncached hit N/A .fi .if n \{\ .RE .\} .SH "همچنین ببینید (SEE ALSO)" .sp \fBperf-record\fR(1), \fBperf-report\fR(1), \fBperf-arm-spe\fR(1)