| PERF-DIFF(1) | perf Manual | PERF-DIFF(1) |
نام (NAME)
perf-diff - خواندن فایلهای perf.data و نمایش پروفایل تفاضلی
خلاصه دستور (SYNOPSIS)
perf diff [baseline file] [data file1] [[data file2] ... ]
توضیحات (DESCRIPTION)
این دستور تفاوت کارایی میان دو یا چند فایل perf.data ضبطشده از طریق perf record را نمایش میدهد.
اگر هیچ آرگومانی داده نشود، پیشفرض فایلهای perf.data.old و perf.data در نظر گرفته خواهند شد.
پروفایل تفاضلی تنها برای رویدادهایی که با هر دو فایل perf.data مشخصشده همخوانی داشته باشند نمایش داده میشود.
اگر هیچ پارامتری ارسال نشود، نمونهها بر اساس dso و نماد (symbol) مرتب میشوند. از آنجا که ممکن است فایلهای perf.data از باینریهای متفاوتی تهیه شده باشند، آدرس نمادها میتواند متغیر باشد؛ بنابراین perf diff بر اساس مقایسه نام فایلها و نمادها عمل میکند.
گزینهها (OPTIONS)
-D, --dump-raw-trace
--kallsyms=<file>
-m, --modules
-d, --dsos=
-C, --comms=
-S, --symbols=
-s, --sort=
-t, --field-separator=
-v, --verbose
-q, --quiet
-f, --force
--symfs=<directory[,layout]>
-b, --baseline-only
-c, --compute
--cycles-hist
-p, --period
-F, --formula
-o, --order
--percentage
«relative» به این معنی است که درصدها فقط نسبت به ورودیهای فیلترشده سنجیده میشوند تا مجموع ورودیهای نمایشیافته همیشه ۱۰۰٪ باشد. «absolute» بدین معناست که مقادیر اصلی قبل و بعد از اعمال فیلتر بدون تغییر حفظ میشوند.
--time
برای مثال:
انتخاب دومین برش زمانی ۱۰٪ برای مقایسه:
perf diff --time 10%/2
انتخاب برش زمانی ۰٪ تا ۱۰٪ برای مقایسه:
perf diff --time 0%-10%
انتخاب اولین و دومین برش زمانی ۱۰٪ برای مقایسه:
perf diff --time 10%/1,10%/2
انتخاب برشهای ۰٪ تا ۱۰٪ و ۳۰٪ تا ۴۰٪ برای مقایسه:
perf diff --time 0%-10%,30%-40%
همچنین از تحلیل نمونهها در یک بازه زمانی مشخص <start>,<stop> پشتیبانی میکند. قالب زمانها seconds.nanoseconds است. اگر 'start' مشخص نشود (یعنی رشته زمانی ',x.y' باشد) تحلیل از ابتدای فایل آغاز میشود. اگر زمان پایان مشخص نشود (یعنی رشته زمانی 'x.y,' باشد) تحلیل تا انتهای فایل ادامه مییابد. چندین بازه را میتوان با فاصله از هم جدا کرد، که نیازمند قرار دادن آرگومان در گیومه است؛ مانند --time "1234.567,1234.789 1235," رشته زمانی به صورت 'a1.b1,c1.d1:a2.b2,c2.d2' است. از ':' برای جداسازی برچسبهای زمانی فایلهای مختلف perf.data استفاده کنید.
برای نمونه، اطلاعات برچسب زمانی را از 'perf script' دریافت میکنیم.
perf script -i perf.data.old mgen 13940 [000] 3946.361400: ...
perf script -i perf.data mgen 13940 [000] 3971.150589 ...
perf diff --time 3946.361400,:3971.150589,
این دستور فایل perf.data.old را از برچسب زمانی 3946.361400 تا انتهای perf.data.old، و فایل perf.data را از برچسب زمانی 3971.150589 تا انتهای perf.data تحلیل میکند.
--cpu
--pid=
--tid=
--stream
مقایسه بر اساس فایل خطپایه (baseline) انجام میشود. فایل perf.data خطپایه برای یافتن نمونهها پیمایش میشود. تمام فایلهای perf.data دیگر که در خط فرمان مشخص شدهاند، برای یافتن جفت نمونهٔ خطپایه جستجو میشوند. اگر جفت یافت شود، محاسبات مشخصشده انجام و نتیجه نمایش داده میشود.
تمام نمونههای حاصل از فایلهای perf.data غیر خطپایه که با هیچ ورودی خطپایهای مطابقت ندارند، با فضای خالی در ستون خطپایه و نتایج محاسباتی احتمالی (دلتا) در ستون مربوط به خود نمایش داده میشوند.
نمونههای فایلهای مثال: - فایل A با نمونههای f1, f2, f3, f4, f6 - فایل B با نمونههای f2, f4, f5 - فایل C با نمونههای f1, f2, f5
خروجی مثال: x - محاسبه برای جفت انجام میشود b - درصد نمونهٔ خطپایه
baseline/A compute/B compute/C samples
---------------------------------------
b x f1
b x x f2
b f3
b x f4
b f6
x x f5
baseline/B compute/A compute/C samples
---------------------------------------
b x x f2
b x f4
b x f5
x x f1
x f3
x f6
baseline/C compute/B compute/A samples
---------------------------------------
b x f1
b x x f2
b x f5
x f3
x x f4
x f6
delta
در صورت تعیین، ستون Delta با مقدار d نمایش داده میشود که به صورت زیر محاسبه میگردد:
d = A->period_percent - B->period_percent
که در آن: - A/B به ترتیب مدخلهای منطبق hist از فایل داده/خط مبنای تعیینشده (یا perf.data/perf.data.old) هستند.
delta-abs
مشابه با روش 'delta`، اما نتیجه را بر اساس مقادیر مطلق مرتب میکند.
ratio
در صورت تعیین، ستون Ratio با مقدار r نمایش داده میشود که به صورت زیر محاسبه میگردد:
r = A->period / B->period
که در آن: - A/B به ترتیب مدخلهای منطبق hist از فایل داده/خط مبنای تعیینشده (یا perf.data/perf.data.old) هستند.
wdiff:WEIGHT-B,WEIGHT-A
در صورت تعیین، ستون Weighted diff با مقدار d نمایش داده میشود که به صورت زیر محاسبه میگردد:
d = B->period * WEIGHT-A - A->period * WEIGHT-B
در صورت تعیین شدن، ستون [Program Block Range] Cycles Diff نمایش داده میشود. این ستون اختلاف چرخهها را برای یک بلوک پایهای برنامه (basic block) یکسان در میان دو فایل perf.data نمایش میدهد. بلوک پایهای برنامه کدی است که میان دو انشعاب قرار دارد.
[Program Block Range] محدوده یک بلوک پایهای برنامه را مشخص میکند. در صورت یافت شدن، خط کد مبدأ گزارش میشود؛ در غیر این صورت بهجای آن از symbol+offset استفاده خواهد شد.
همچنین ببینید (SEE ALSO)
| 09/04/2026 | perf |