'\" t .\" Title: perf-diff .\" 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\-DIFF" "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-diff \- خواندن فایل‌های perf\&.data و نمایش پروفایل تفاضلی .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fIperf diff\fR [baseline file] [data file1] [[data file2] \&... ] .fi .SH "توضیحات (DESCRIPTION)" .sp این دستور تفاوت کارایی میان دو یا چند فایل perf\&.data ضبط‌شده از طریق perf record را نمایش می‌دهد\&. .sp اگر هیچ آرگومانی داده نشود، پیش‌فرض فایل‌های perf\&.data\&.old و perf\&.data در نظر گرفته خواهند شد\&. .sp پروفایل تفاضلی تنها برای رویدادهایی که با هر دو فایل perf\&.data مشخص‌شده همخوانی داشته باشند نمایش داده می‌شود\&. .sp اگر هیچ پارامتری ارسال نشود، نمونه‌ها بر اساس dso و نماد (symbol) مرتب می‌شوند\&. از آنجا که ممکن است فایل‌های perf\&.data از باینری‌های متفاوتی تهیه شده باشند، آدرس نمادها می‌تواند متغیر باشد؛ بنابراین perf diff بر اساس مقایسه نام فایل‌ها و نمادها عمل می‌کند\&. .SH "گزینه‌ها (OPTIONS)" .PP \-D, \-\-dump\-raw\-trace .RS 4 تخلیه (dump) ردپای خام به صورت ASCII\&. .RE .PP \-\-kallsyms= .RS 4 مسیر kallsyms .RE .PP \-m, \-\-modules .RS 4 بارگذاری نمادهای ماژول\&. هشدار: تنها همراه با \-k و کرنل زنده (LIVE) استفاده شود\&. .RE .PP \-d, \-\-dsos= .RS 4 فقط نمادهای موجود در این dsoها را لحاظ می‌کند\&. از ورودی‌های به سبک CSV و قالب \m[blue]\fBfile://filename\fR\m[] پشتیبانی می‌کند\&. این گزینه بر درصد ستون Baseline/Delta تأثیر می‌گذارد\&. برای اطلاعات بیشتر \-\-percentage را ببینید\&. .RE .PP \-C, \-\-comms= .RS 4 فقط نمادهای موجود در این commها را لحاظ می‌کند\&. از ورودی‌های به سبک CSV و قالب \m[blue]\fBfile://filename\fR\m[] پشتیبانی می‌کند\&. این گزینه بر درصد ستون Baseline/Delta تأثیر می‌گذارد\&. برای اطلاعات بیشتر \-\-percentage را ببینید\&. .RE .PP \-S, \-\-symbols= .RS 4 فقط این نمادها را لحاظ می‌کند\&. از ورودی‌های به سبک CSV و قالب \m[blue]\fBfile://filename\fR\m[] پشتیبانی می‌کند\&. این گزینه بر درصد ستون Baseline/Delta تأثیر می‌گذارد\&. برای اطلاعات بیشتر \-\-percentage را ببینید\&. .RE .PP \-s, \-\-sort= .RS 4 مرتب‌سازی بر اساس کلید(ها): pid، comm، dso، symbol، cpu، parent، srcline\&. لطفاً توضیحات \-\-sort را در صفحه راهنمای perf\-report مشاهده کنید\&. .RE .PP \-t, \-\-field\-separator= .RS 4 استفاده از یک نویسه جداکننده خاص و بدون پر کردن فاصله‌ها با space؛ تمام رخدادهای این نویسه جداکننده در نام نمادها (و سایر خروجی‌ها) با یک نویسه \fI\&.\fR جایگزین می‌شود، در نتیجه این نویسه تنها جداکننده غیرمجاز خواهد بود\&. .RE .PP \-v, \-\-verbose .RS 4 نمایش با جزئیات بیشتر؛ برای نمونه، نمایش شمارنده‌های خام علاوه بر diff\&. .RE .PP \-q, \-\-quiet .RS 4 عدم نمایش هرگونه پیام یا هشدار\&. (لغو \-v) .RE .PP \-f, \-\-force .RS 4 عدم اعتبارسنجی مالکیت فایل‌ها\&. .RE .PP \-\-symfs= .RS 4 جستجوی فایل‌های دارای نماد به صورت نسبی نسبت به این دایرکتوری\&. ساختار چیدمان اختیاری می‌تواند \fIhierarchy\fR (پیش‌فرض، تطبیق با مسیر کامل) یا \fIflat\fR (فقط تطبیق با نام پایه) باشد\&. این گزینه زمانی مفید است که فایل‌های دیباگ در یک ساختار دایرکتوری مسطح نگهداری می‌شوند\&. .RE .PP \-b, \-\-baseline\-only .RS 4 تنها مواردی که با baseline مطابقت دارند نمایش داده شوند\&. .RE .PP \-c, \-\-compute .RS 4 انتخاب شیوه محاسبات تفاضلی \- delta، ratio، wdiff، cycles، delta\-abs (پیش‌فرض delta\-abs است)\&. مقدار پیش‌فرض را می‌توان با استفاده از گزینه پیکربندی diff\&.compute تغییر داد\&. برای جزئیات بیشتر بخش COMPARISON METHODS را مشاهده کنید\&. .RE .PP \-\-cycles\-hist .RS 4 ارائه گزارش هیستوگرام و انحراف معیار برای داده‌های چرخه‌ها (cycles)\&. این گزینه کمک می‌کند تشخیص دهیم داده‌های چرخه‌های گزارش‌شده دارای نویز هستند یا خیر\&. این گزینه باید همراه با \fI\-c cycles\fR استفاده شود\&. .RE .PP \-p, \-\-period .RS 4 نمایش مقادیر دوره (period) برای هر دو ورودی hist مقایسه‌شده\&. .RE .PP \-F, \-\-formula .RS 4 نمایش فرمول مورد استفاده برای محاسبه تعیین‌شده\&. .RE .PP \-o, \-\-order .RS 4 مشخص کردن شماره ستون محاسباتی برای مرتب‌سازی\&. مقدار 0 به معنای مرتب‌سازی بر اساس بالاسری baseline و مقدار 1 (پیش‌فرض) به معنای مرتب‌سازی بر اساس مقدار محاسبه‌شده ستون ۱ (داده‌های اولین فایل غیر از baseline) است\&. مقادیر بزرگتر از 1 تنها در صورتی قابل استفاده هستند که تعداد کافی فایل داده فراهم شده باشد\&. مقدار پیش‌فرض را می‌توان از طریق گزینه پیکربندی diff\&.order تنظیم کرد\&. .RE .PP \-\-percentage .RS 4 تعیین نحوه نمایش درصد بالاسری (overhead) ورودی‌های فیلترشده\&. فیلترها را می‌توان با گزینه‌های \-\-comms، \-\-dsos و/یا \-\-symbols اعمال کرد\&. .sp .if n \{\ .RS 4 .\} .nf «relative» به این معنی است که درصدها فقط نسبت به ورودی‌های فیلترشده سنجیده می‌شوند تا مجموع ورودی‌های نمایش‌یافته همیشه ۱۰۰٪ باشد\&. «absolute» بدین معناست که مقادیر اصلی قبل و بعد از اعمال فیلتر بدون تغییر حفظ می‌شوند\&. .fi .if n \{\ .RE .\} .RE .PP \-\-time .RS 4 تجزیه و تحلیل نمونه‌ها در بازه زمانی مشخص‌شده\&. این گزینه از درصد زمانی به همراه بازه‌های زمانی چندگانه پشتیبانی می‌کند\&. قالب رشته زمان به صورت \fIa%/n,b%/m,\&...\fR یا \fIa%\-b%,c%\-%d,\&...\fR است\&. .sp .if n \{\ .RS 4 .\} .nf برای مثال: .fi .if n \{\ .RE .\}.sp .if n \{\ .RS 4 .\} .nf انتخاب دومین برش زمانی ۱۰٪ برای مقایسه: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf diff \-\-time 10%/2 .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf انتخاب برش زمانی ۰٪ تا ۱۰٪ برای مقایسه: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf diff \-\-time 0%\-10% .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf انتخاب اولین و دومین برش زمانی ۱۰٪ برای مقایسه: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf diff \-\-time 10%/1,10%/2 .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf انتخاب برش‌های ۰٪ تا ۱۰٪ و ۳۰٪ تا ۴۰٪ برای مقایسه: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf diff \-\-time 0%\-10%,30%\-40% .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf همچنین از تحلیل نمونه‌ها در یک بازه زمانی مشخص , پشتیبانی می‌کند\&. قالب زمان‌ها seconds\&.nanoseconds است\&. اگر \*(Aqstart\*(Aq مشخص نشود (یعنی رشته زمانی \*(Aq,x\&.y\*(Aq باشد) تحلیل از ابتدای فایل آغاز می‌شود\&. اگر زمان پایان مشخص نشود (یعنی رشته زمانی \*(Aqx\&.y,\*(Aq باشد) تحلیل تا انتهای فایل ادامه می‌یابد\&. چندین بازه را می‌توان با فاصله از هم جدا کرد، که نیازمند قرار دادن آرگومان در گیومه است؛ مانند \-\-time "1234\&.567,1234\&.789 1235," رشته زمانی به صورت \*(Aqa1\&.b1,c1\&.d1:a2\&.b2,c2\&.d2\*(Aq است\&. از \*(Aq:\*(Aq برای جداسازی برچسب‌های زمانی فایل‌های مختلف perf\&.data استفاده کنید\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf برای نمونه، اطلاعات برچسب زمانی را از \*(Aqperf script\*(Aq دریافت می‌کنیم\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf script \-i perf\&.data\&.old mgen 13940 [000] 3946\&.361400: \&.\&.\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf script \-i perf\&.data mgen 13940 [000] 3971\&.150589 \&.\&.\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf perf diff \-\-time 3946\&.361400,:3971\&.150589, .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf این دستور فایل perf\&.data\&.old را از برچسب زمانی 3946\&.361400 تا انتهای perf\&.data\&.old، و فایل perf\&.data را از برچسب زمانی 3971\&.150589 تا انتهای perf\&.data تحلیل می‌کند\&. .fi .if n \{\ .RE .\} .RE .PP \-\-cpu .RS 4 تنها نمونه‌ها را برای فهرست CPUهای ارائه‌شده مقایسه می‌کند\&. چندین CPU را می‌توان به صورت یک فهرست جداشده با کاما و بدون فاصله مشخص کرد: 0,1\&. بازه‌های CPU با \- مشخص می‌شوند: 0\-2\&. حالت پیش‌فرض، گزارش نمونه‌ها روی تمام CPUها است\&. .RE .PP \-\-pid= .RS 4 تنها نمونه‌ها را برای شناسه فرایند (PID) داده‌شده مقایسه می‌کند (فهرست جداشده با کاما)\&. .RE .PP \-\-tid= .RS 4 تنها نمونه‌ها را برای شناسه رشته (TID) داده‌شده مقایسه می‌کند (فهرست جداشده با کاما)\&. .RE .PP \-\-stream .RS 4 فعال‌سازی مقایسه جریان‌های داغ (hot streams)\&. یک جریان می‌تواند یک زنجیره فراخوانی (callchain) باشد که توسط رکوردهای انشعاب (branch records) حاصل از نمونه‌ها تجمیع شده است\&. .RE.SH "مقایسه (COMPARISON)" .sp مقایسه بر اساس فایل خط‌پایه (baseline) انجام می‌شود\&. فایل perf\&.data خط‌پایه برای یافتن نمونه‌ها پیمایش می‌شود\&. تمام فایل‌های perf\&.data دیگر که در خط فرمان مشخص شده‌اند، برای یافتن جفت نمونهٔ خط‌پایه جستجو می‌شوند\&. اگر جفت یافت شود، محاسبات مشخص‌شده انجام و نتیجه نمایش داده می‌شود\&. .sp تمام نمونه‌های حاصل از فایل‌های perf\&.data غیر خط‌پایه که با هیچ ورودی خط‌پایه‌ای مطابقت ندارند، با فضای خالی در ستون خط‌پایه و نتایج محاسباتی احتمالی (دلتا) در ستون مربوط به خود نمایش داده می‌شوند\&. .sp نمونه‌های فایل‌های مثال: \- فایل A با نمونه‌های f1, f2, f3, f4, f6 \- فایل B با نمونه‌های f2, f4, f5 \- فایل C با نمونه‌های f1, f2, f5 .sp خروجی مثال: x \- محاسبه برای جفت انجام می‌شود b \- درصد نمونهٔ خط‌پایه .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} perf diff A B C .sp .if n \{\ .RS 4 .\} .nf baseline/A compute/B compute/C samples \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- b x f1 b x x f2 b f3 b x f4 b f6 x x f5 .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} perf diff B A C .sp .if n \{\ .RS 4 .\} .nf baseline/B compute/A compute/C samples \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- b x x f2 b x f4 b x f5 x x f1 x f3 x f6 .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} perf diff C B A .sp .if n \{\ .RS 4 .\} .nf baseline/C compute/B compute/A samples \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- b x f1 b x x f2 b x f5 x f3 x x f4 x f6 .fi .if n \{\ .RE .\} .RE.SH "روش‌های مقایسه (COMPARISON METHODS)" .SS "delta" .sp در صورت تعیین، ستون \fIDelta\fR با مقدار \fId\fR نمایش داده می‌شود که به صورت زیر محاسبه می‌گردد: .sp .if n \{\ .RS 4 .\} .nf d = A\->period_percent \- B\->period_percent .fi .if n \{\ .RE .\} .sp که در آن: \- A/B به ترتیب مدخل‌های منطبق hist از فایل داده/خط مبنای تعیین‌شده (یا perf\&.data/perf\&.data\&.old) هستند\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مقدار period_percent درصد مقدار period مدخل hist درون یک تک‌فایل داده است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} با فیلتر کردن توسط \-C، \-d و/یا \-S، مقدار period_percent ممکن است بسته به نحوه فیلتر شدن مدخل‌ها تغییر کند\&. برای جلوگیری از چنین نوسانی از \-\-percentage=absolute استفاده کنید\&. .RE .SS "delta\-abs" .sp مشابه با روش \*(Aqdelta`، اما نتیجه را بر اساس مقادیر مطلق مرتب می‌کند\&. .SS "ratio" .sp در صورت تعیین، ستون \fIRatio\fR با مقدار \fIr\fR نمایش داده می‌شود که به صورت زیر محاسبه می‌گردد: .sp .if n \{\ .RS 4 .\} .nf r = A\->period / B\->period .fi .if n \{\ .RE .\} .sp که در آن: \- A/B به ترتیب مدخل‌های منطبق hist از فایل داده/خط مبنای تعیین‌شده (یا perf\&.data/perf\&.data\&.old) هستند\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مقدار period بیانگر مقدار دوره (period) مدخل hist است .RE .SS "wdiff:WEIGHT\-B,WEIGHT\-A" .sp در صورت تعیین، ستون \fIWeighted diff\fR با مقدار \fId\fR نمایش داده می‌شود که به صورت زیر محاسبه می‌گردد: .sp .if n \{\ .RS 4 .\} .nf d = B\->period * WEIGHT\-A \- A\->period * WEIGHT\-B .fi .if n \{\ .RE .\} .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مقادیر A/B به ترتیب مدخل‌های منطبق hist از فایل داده/خط مبنای تعیین‌شده (یا perf\&.data/perf\&.data\&.old) هستند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مقدار period بیانگر مقدار دوره (period) مدخل hist است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مقادیر WEIGHT\-A/WEIGHT\-B وزن‌های ارائه‌شده توسط کاربر در گزینه \fI\-c\fR پس از جداکننده \fI:\fR مانند \fI\-c wdiff:1,2\fR هستند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مقدار WEIGHT\-A وزن فایل داده است .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مقدار WEIGHT\-B وزن فایل داده مبنا (baseline) است .RE.SS "cycles" .sp در صورت تعیین شدن، ستون \fI[Program Block Range] Cycles Diff\fR نمایش داده می‌شود\&. این ستون اختلاف چرخه‌ها را برای یک بلوک پایه‌ای برنامه (basic block) یکسان در میان دو فایل perf\&.data نمایش می‌دهد\&. بلوک پایه‌ای برنامه کدی است که میان دو انشعاب قرار دارد\&. .sp \fI[Program Block Range]\fR محدوده یک بلوک پایه‌ای برنامه را مشخص می‌کند\&. در صورت یافت شدن، خط کد مبدأ گزارش می‌شود؛ در غیر این صورت به‌جای آن از symbol+offset استفاده خواهد شد\&. .SH "همچنین ببینید (SEE ALSO)" .sp \fBperf-record\fR(1), \fBperf-report\fR(1)