PERF-SCHED(1) perf Manual PERF-SCHED(1)

perf-sched - ابزاری برای ردگیری و سنجش ویژگی‌های زمان‌بند (تاخیرها)

perf sched {record|latency|map|replay|script|timehist|stats}

چندین حالت مختلف از perf sched وجود دارد:

دستور 'perf sched record <command>' برای ثبت رویدادهای زمان‌بندی
یک بار کاری دلخواه.
دستور 'perf sched latency' برای گزارش تاخیرهای زمان‌بندی به ازای هر وظیفه
و دیگر ویژگی‌های زمان‌بندی بار کاری.
مثال کاربرد:
    perf sched record -- sleep 1
    perf sched latency
-------------------------------------------------------------------------------------------------------------------------------------
Task                  |   Runtime ms  |  Count   | Avg delay ms    | Max delay ms    | Max delay start           | Max delay end          |
-------------------------------------------------------------------------------------------------------------------------------------
perf:(2)              |      2.804 ms |       66 | avg:   0.524 ms | max:   1.069 ms | max start: 254752.314960 s | max end: 254752.316029 s
NetworkManager:1343   |      0.372 ms |       13 | avg:   0.008 ms | max:   0.013 ms | max start: 254751.551153 s | max end: 254751.551166 s
kworker/1:2-xfs:4649  |      0.012 ms |        1 | avg:   0.008 ms | max:   0.008 ms | max start: 254751.519807 s | max end: 254751.519815 s
kworker/3:1-xfs:388   |      0.011 ms |        1 | avg:   0.006 ms | max:   0.006 ms | max start: 254751.519809 s | max end: 254751.519815 s
sleep:147736          |      0.938 ms |        3 | avg:   0.006 ms | max:   0.007 ms | max start: 254751.313817 s | max end: 254751.313824 s
این دستور مقادیر Runtime (مدت‌زمانی که یک وظیفه واقعاً روی CPU در حال اجرا بوده)،
Count (تعداد دفعاتی که تاخیر محاسبه شده) و delay (مدت‌زمانی که یک وظیفه
آماده اجرا بوده اما در انتظار نگه داشته شده) را نمایش می‌دهد.
وظایفی با نام دستور یکسان ادغام می‌شوند و تعداد موارد ادغام‌شده درون () نمایش
داده می‌شود؛ با این حال اگر گزینه -p استفاده شود، pid ذکر می‌گردد.
دستور 'perf sched script' برای مشاهده ردگیری دقیق بار کاری که
ثبت شده است (در حال حاضر نام مستعاری برای 'perf script' است).
دستور 'perf sched replay' برای شبیه‌سازی بار کاری که از طریق
perf sched record ضبط شده است. (این کار با راه‌اندازی ریسمان‌های شبیه‌سازی‌شده‌ای
انجام می‌شود که بار کاری را بر اساس رویدادهای موجود در ردگیری تقلید می‌کنند.
این ریسمان‌ها سپس می‌توانند زمان‌بندی‌ها (مدت‌زمان اجرای CPU و الگوهای خواب)
بار کاری را دقیقاً همان‌گونه که در زمان ثبت رخ داده بود بازپخش کنند - و می‌توانند
آن را چندین بار تکرار کرده و کارایی آن را بسنجند.)
دستور 'perf sched map' برای چاپ ساختار متنی تعویض زمینه (context-switching)
بار کاری ثبت‌شده از طریق perf sched record. ستون‌ها نمایانگر
تک‌تک CPUها هستند و شناسه‌های اختصاری دو حرفی نشان‌دهنده وظایفی هستند که روی یک CPU
در حال اجرا می‌باشند. یک '*' نشان‌دهنده CPU دارای رویداد است و
یک نقطه نشان‌دهنده یک CPU بیکار است.
دستور 'perf sched timehist' تحلیلی از رویدادهای زمان‌بندی ارائه می‌دهد.
مثال کاربرد:
    perf sched record -- sleep 1
    perf sched timehist
به طور پیش‌فرض، رویدادهای زمان‌بندی به صورت مجزا نمایش داده می‌شوند، از جمله زمان
انتظار (wait time، زمان بین رویدادهای sched-out و sched-in بعدی برای وظیفه)، تاخیر
زمان‌بندی وظیفه (scheduling delay، زمان بین آماده به کار بودن و اجرای واقعی) و
مدت‌زمان اجرای (run time) وظیفه:
            time    cpu  task name             wait time  sch delay   run time
                         [tid/pid]                (msec)     (msec)     (msec)
  -------------- ------  --------------------  ---------  ---------  ---------
    79371.874569 [0011]  gcc[31949]                0.014      0.000      1.148
    79371.874591 [0010]  gcc[31951]                0.000      0.000      0.024
    79371.874603 [0010]  migration/10[59]          3.350      0.004      0.011
    79371.874604 [0011]  <idle>                    1.148      0.000      0.035
    79371.874723 [0005]  <idle>                    0.016      0.000      1.383
    79371.874746 [0005]  gcc[31949]                0.153      0.078      0.022
...
زمان‌ها بر حسب msec.usec هستند.
دستور 'perf sched stats {record | report | diff} <command>' به‌ترتیب برای ثبت،
گزارش تفاوت در شمارنده‌های schedstat و نمایش اختلاف میان گزارش‌های perf sched stats
به‌کار می‌رود. شمارنده‌های schedstat که در هسته لینوکس وجود دارند، از طریق فایل
``/proc/schedstat`` در دسترس قرار می‌گیرند. این شمارنده‌ها از طریق sysctl که توسط
فایل ``/proc/sys/kernel/sched_schedstats`` کنترل می‌شود، فعال یا غیرفعال می‌شوند.
این شمارنده‌ها رویدادهای متعددی از زمان‌بند، از جمله فراخوانی‌های ``schedule()``،
رویدادهای توازن بار (load-balancing) و فراخوانی‌های ``try_to_wakeup()`` را محاسبه
می‌کنند. این قابلیت برای درک رفتار زمان‌بند در برابر بار کاری مفید است.
نکته: در صورتی که در فاصله زمانی بین ثبت اسنپ‌شات‌های `/proc/schedstat`، بازآرایی توپولوژیک
      یا آنلاین/آفلاین شدن cpuها رخ دهد، این ابزار نتایج درستی ارائه نخواهد داد.
نمونه کاربرد:
    perf sched stats record -- sleep 1
    perf sched stats report
    perf sched stats diff
توضیحات تفصیلی درباره schedstat را می‌توان در مستندات هسته یافت:
https://www.kernel.org/doc/html/latest/scheduler/sched-stats.html
نتیجه را می‌توان به‌صورت زیر تفسیر کرد:
دستور `perf sched stats report` با شرح ستون‌های موجود در گزارش آغاز می‌شود.
این نام‌های ستون پیش از آمار cpu و domain آورده شده‌اند تا خوانایی گزارش
بهبود یابد.
----------------------------------------------------------------------------------------------------
DESC                    -> Description of the field
COUNT                   -> Value of the field
PCT_CHANGE              -> Percent change with corresponding base value
AVG_JIFFIES             -> Avg time in jiffies between two consecutive occurrence of event
----------------------------------------------------------------------------------------------------
مورد بعدی، کل زمان پروفایل‌سازی بر حسب jiffies است:
----------------------------------------------------------------------------------------------------
Time elapsed (in jiffies)                                   :        2323
----------------------------------------------------------------------------------------------------
مورد بعدی، آمار زمان‌بندی CPU است. این موارد تفاضل‌های ساده‌ای از خطوط CPU در
/proc/schedstat به‌همراه شرح آن‌ها هستند. این گزارش همچنین مقدار % را نسبت
به آمار پایه چاپ می‌کند.
در مثال زیر، schedule() پردازنده CPU0 را در 36.58% از زمان در حالت بیکار رها کرده است. 0.45% از کل
فراخوانی‌های try_to_wake_up() برای بیدار کردن CPU محلی بوده است. و کل زمان انتظار
وظایف روی CPU0 برابر با 48.70% از کل زمان اجرای وظایف روی همان CPU است.
----------------------------------------------------------------------------------------------------
CPU 0
----------------------------------------------------------------------------------------------------
DESC                                                                     COUNT   PCT_CHANGE
----------------------------------------------------------------------------------------------------
yld_count                                                        :           0
array_exp                                                        :           0
sched_count                                                      :      402267
sched_goidle                                                     :      147161  (    36.58% )
ttwu_count                                                       :      236309
ttwu_local                                                       :        1062  (     0.45% )
rq_cpu_time                                                      :  7083791148
run_delay                                                        :  3449973971  (    48.70% )
pcount                                                           :      255035
----------------------------------------------------------------------------------------------------
بخش بعدی آمار موازنه‌سازی بار (load balancing) است. زمان‌بند برای هر یک از دامنه‌های
زمان‌بندی (مانند: `SMT`، `MC`، `DIE`...)، آمار را در سه دسته‌بندی زیر محاسبه می‌کند:
1) Idle Load Balance: موازنه‌سازی بار انجام‌شده توسط یک CPU دیگر به نیابت از
                      یک CPU که به مدت طولانی بی‌کار بوده است.
2) Busy Load Balance: موازنه‌سازی بار انجام‌شده زمانی که CPU مشغول بوده است.
3) New Idle Balance : موازنه‌سازی بار انجام‌شده هنگامی که یک CPU به‌تازگی
                     بی‌کار شده است.
ذیل هر یک از این سه دسته‌بندی، گزارش sched stats آمارهای متفاوتی از
موازنه‌سازی بار را ارائه می‌دهد. در کنار آمارهای مستقیم، این گزارش حاوی
معیارهای مشتق‌شده‌ای نیز هست که با * پیشوندگذاری شده‌اند. مثال:
----------------------------------------------------------------------------------------------------
CPU 0, DOMAIN SMT CPUS 0,64
----------------------------------------------------------------------------------------------------
DESC                                                                     COUNT    AVG_JIFFIES
----------------------------------------- <Category busy> ------------------------------------------
busy_lb_count                                                    :         136  $       17.08 $
busy_lb_balanced                                                 :         131  $       17.73 $
busy_lb_failed                                                   :           0  $        0.00 $
busy_lb_imbalance_load                                           :          58
busy_lb_imbalance_util                                           :           0
busy_lb_imbalance_task                                           :           0
busy_lb_imbalance_misfit                                         :           0
busy_lb_gained                                                   :           7
busy_lb_hot_gained                                               :           0
busy_lb_nobusyq                                                  :           2  $     1161.50 $
busy_lb_nobusyg                                                  :         129  $       18.01 $
*busy_lb_success_count                                           :           5
*busy_lb_avg_pulled                                              :        1.40
----------------------------------------- <Category idle> ------------------------------------------
idle_lb_count                                                    :         449  $        5.17 $
idle_lb_balanced                                                 :         382  $        6.08 $
idle_lb_failed                                                   :           3  $      774.33 $
idle_lb_imbalance_load                                           :           0
idle_lb_imbalance_util                                           :           0
idle_lb_imbalance_task                                           :          71
idle_lb_imbalance_misfit                                         :           0
idle_lb_gained                                                   :          67
idle_lb_hot_gained                                               :           0
idle_lb_nobusyq                                                  :           0  $        0.00 $
idle_lb_nobusyg                                                  :         382  $        6.08 $
*idle_lb_success_count                                           :          64
*idle_lb_avg_pulled                                              :        1.05
---------------------------------------- <Category newidle> ----------------------------------------
newidle_lb_count                                                 :       30471  $        0.08 $
newidle_lb_balanced                                              :       28490  $        0.08 $
newidle_lb_failed                                                :         633  $        3.67 $
newidle_lb_imbalance_load                                        :           0
newidle_lb_imbalance_util                                        :           0
newidle_lb_imbalance_task                                        :        2040
newidle_lb_imbalance_misfit                                      :           0
newidle_lb_gained                                                :        1348
newidle_lb_hot_gained                                            :           0
newidle_lb_nobusyq                                               :           6  $      387.17 $
newidle_lb_nobusyg                                               :       26634  $        0.09 $
*newidle_lb_success_count                                        :        1348
*newidle_lb_avg_pulled                                           :        1.00
----------------------------------------------------------------------------------------------------
سطر زیر را در نظر بگیرید:
newidle_lb_balanced                                              :       28490  $        0.08 $
در حالی که پروفایل‌سازی فعال بود، موازنه‌ساز بار ۲۸۴۹۰ بار تشخیص داد که بار
روی CPU 0 که به‌تازگی بی‌کار شده نیاز به موازنه‌سازی دارد. مقدار درج‌شده درون
علامت $، میانگین jiffies میان دو رویداد است (2323 / 28490 = 0.08).
بخش بعدی آمار active_load_balance() است. در زمان فعال بودن پروفایل‌سازی،
alb فراخوانی نشد، از این رو تمام مقادیر آن 0 هستند.
--------------------------------- <Category active_load_balance()> ---------------------------------
alb_count                                                        :           0
alb_failed                                                       :           0
alb_pushed                                                       :           0
----------------------------------------------------------------------------------------------------
بخش بعدی آمار sched_balance_exec() و sched_balance_fork() است. از آن‌ها
استفاده نمی‌شود اما صرفاً برای سازگاری با نسخه‌های پیشین در RFC نگه داشته شده‌اند.
در صورت عدم مخالفت، برنامه‌ریزی شده است که در بازبینی بعدی حذف شوند.
بخش بعدی آمار بیدارباش (wakeup) است. این گزارش برای هر دامنه، آمار
بیدار شدن وظایف (task-wakeup) را نیز نمایش می‌دهد. مثال:
------------------------------------------ <Wakeup Info> -------------------------------------------
ttwu_wake_remote                                                 :        1590
ttwu_move_affine                                                 :          84
ttwu_move_balance                                                :           0
----------------------------------------------------------------------------------------------------
مجموعه یکسانی از آمارها برای هر CPU و هر سطح دامنه (domain) گزارش می‌شود.
نحوه تفسیر diff
~~~~~~~~~~~~~~~
دستور `perf sched stats diff` همچنین با توضیح ستون‌های موجود در diff آغاز
خواهد شد. سپس اختلاف زمانی را بر حسب jiffies نمایش می‌دهد. ترتیب مقادیر
به ترتیب فایل‌های داده ورودی بستگی دارد. این دستور به‌طور پیش‌فرض
به‌ترتیب `perf.data.old` و `perf.data` را برای مقایسه در نظر می‌گیرد. مثال:
----------------------------------------------------------------------------------------------------
Time elapsed (in jiffies)                                        :        2009,       2001
----------------------------------------------------------------------------------------
در زیر نمونه‌ای آورده شده است که تفاوت در آمارهای cpu و domain دو اجرا را
نشان می‌دهد. در اینجا ستون سوم یا مقادیر محصور در `|...|` درصد تغییرات بین
این دو را نشان می‌دهد. ستون‌های دوم و چهارم نمایش کنار همِ فیلدهای متناظر
از `perf sched stats report` هستند.
----------------------------------------------------------------------------------------------------
CPU <ALL CPUS SUMMARY>
----------------------------------------------------------------------------------------------------
DESC                                                                    COUNT1      COUNT2   PCT_CHANG>
----------------------------------------------------------------------------------------------------
yld_count                                                        :           0,          0  |     0.00>
array_exp                                                        :           0,          0  |     0.00>
sched_count                                                      :      528533,     412573  |   -21.94>
sched_goidle                                                     :      193426,     146082  |   -24.48>
ttwu_count                                                       :      313134,     385975  |    23.26>
ttwu_local                                                       :        1126,       1282  |    13.85>
rq_cpu_time                                                      :  8257200244, 8301250047  |     0.53>
run_delay                                                        :  4728347053, 3997100703  |   -15.47>
pcount                                                           :      335031,     266396  |   -20.49>
----------------------------------------------------------------------------------------------------
در زیر نمونه‌ای از diff آمارهای domain آورده شده است:
----------------------------------------------------------------------------------------------------
CPU <ALL CPUS SUMMARY>, DOMAIN SMT
----------------------------------------------------------------------------------------------------
DESC                                                                    COUNT1      COUNT2   PCT_CHANG>
----------------------------------------- <Category busy> ------------------------------------------
busy_lb_count                                                    :         122,         80  |   -34.43>
busy_lb_balanced                                                 :         115,         76  |   -33.91>
busy_lb_failed                                                   :           1,          3  |   200.00>
busy_lb_imbalance_load                                           :          35,         49  |    40.00>
busy_lb_imbalance_util                                           :           0,          0  |     0.00>
busy_lb_imbalance_task                                           :           0,          0  |     0.00>
busy_lb_imbalance_misfit                                         :           0,          0  |     0.00>
busy_lb_gained                                                   :           7,          2  |   -71.43>
busy_lb_hot_gained                                               :           0,          0  |     0.00>
busy_lb_nobusyq                                                  :           0,          0  |     0.00>
busy_lb_nobusyg                                                  :         115,         76  |   -33.91>
*busy_lb_success_count                                           :           6,          1  |   -83.33>
*busy_lb_avg_pulled                                              :        1.17,       2.00  |    71.43>
----------------------------------------- <Category idle> ------------------------------------------
idle_lb_count                                                    :         568,        620  |     9.15>
idle_lb_balanced                                                 :         462,        449  |    -2.81>
idle_lb_failed                                                   :          11,         21  |    90.91>
idle_lb_imbalance_load                                           :           0,          0  |     0.00>
idle_lb_imbalance_util                                           :           0,          0  |     0.00>
idle_lb_imbalance_task                                           :         115,        189  |    64.35>
idle_lb_imbalance_misfit                                         :           0,          0  |     0.00>
idle_lb_gained                                                   :         103,        169  |    64.08>
idle_lb_hot_gained                                               :           0,          0  |     0.00>
idle_lb_nobusyq                                                  :           0,          0  |     0.00>
idle_lb_nobusyg                                                  :         462,        449  |    -2.81>
*idle_lb_success_count                                           :          95,        150  |    57.89>
*idle_lb_avg_pulled                                              :        1.08,       1.13  |     3.92>
---------------------------------------- <Category newidle> ----------------------------------------
newidle_lb_count                                                 :       16961,       3155  |   -81.40>
newidle_lb_balanced                                              :       15646,       2556  |   -83.66>
newidle_lb_failed                                                :         397,        142  |   -64.23>
newidle_lb_imbalance_load                                        :           0,          0  |     0.00>
newidle_lb_imbalance_util                                        :           0,          0  |     0.00>
newidle_lb_imbalance_task                                        :        1376,        655  |   -52.40>
newidle_lb_imbalance_misfit                                      :           0,          0  |     0.00>
newidle_lb_gained                                                :         917,        457  |   -50.16>
newidle_lb_hot_gained                                            :           0,          0  |     0.00>
newidle_lb_nobusyq                                               :           3,          1  |   -66.67>
newidle_lb_nobusyg                                               :       14480,       2103  |   -85.48>
*newidle_lb_success_count                                        :         918,        457  |   -50.22>
*newidle_lb_avg_pulled                                           :        1.00,       1.00  |     0.11>
--------------------------------- <Category active_load_balance()> ---------------------------------
alb_count                                                        :           0,          1  |     0.00>
alb_failed                                                       :           0,          0  |     0.00>
alb_pushed                                                       :           0,          1  |     0.00>
--------------------------------- <Category sched_balance_exec()> ----------------------------------
sbe_count                                                        :           0,          0  |     0.00>
sbe_balanced                                                     :           0,          0  |     0.00>
sbe_pushed                                                       :           0,          0  |     0.00>
--------------------------------- <Category sched_balance_fork()> ----------------------------------
sbf_count                                                        :           0,          0  |     0.00>
sbf_balanced                                                     :           0,          0  |     0.00>
sbf_pushed                                                       :           0,          0  |     0.00>
------------------------------------------ <Wakeup Info> -------------------------------------------
ttwu_wake_remote                                                 :        2031,       2914  |    43.48>
ttwu_move_affine                                                 :          73,        124  |    69.86>
ttwu_move_balance                                                :           0,          0  |     0.00>
----------------------------------------------------------------------------------------------------

قابل اعمال بر {record|latency|map|replay|script}

-i, --input=<file>

نام فایل ورودی. (پیش‌فرض: perf.data مگر اینکه stdin یک fifo باشد)

-v, --verbose

نمایش توضیحات بیشتر. (نمایش آدرس نمادها و غیره)

-D, --dump-raw-trace=

نمایش خروجی کامل و پرجزئیات داده‌های sched.

-f, --force

بدون پرسش یا اخطار انجام بده.

-C, --CPU <n>

پردازنده‌ای (CPU) که ارزیابی عملکرد روی آن انجام می‌شود.

-p, --pids

آمار تاخیر (latency) بر حسب pid به جای نام دستور.

-s, --sort <key[,key2...]>

مرتب‌سازی بر اساس کلید(ها): runtime، switch، avg، max به‌طور پیش‌فرض بر اساس "avg ,max ,switch ,runtime" مرتب می‌شود.

--compact

فقط پردازنده‌های دارای فعالیت را نمایش بده. به مصورسازی در سامانه‌های دارای تعداد هسته بالا کمک می‌کند.

--cpus

فقط ورودی‌های دارای فعالیت برای CPUهای مشخص‌شده را نمایش بده.

--color-cpus

برجسته‌سازی CPUهای مشخص‌شده.

--color-pids

برجسته‌سازی pidهای مشخص‌شده.

--task-name <task>

نگاشت خروجی تنها برای نام وظیفه(های) مشخص‌شده. نام‌های وظایف را با کاما (بدون فاصله) جدا کنید. زمان sched-out چاپ شده و با *- برای نام وظیفه(های) داده‌شده نشان داده می‌شود. (- نشان‌دهنده سایر وظایف است، در حالی که . حالت بیکار یا idle است).

--fuzzy-name

نام وظیفه(های) داده‌شده می‌تواند به‌صورت تقریبی تطبیق داده شود (تطبیق فازی).

-k, --vmlinux=<file>

مسیر فایل vmlinux

--kallsyms=<file>

مسیر فایل kallsyms

-g, --call-graph

نمایش زنجیره‌های فراخوانی (call chains) در صورت وجود (به‌طور پیش‌فرض فعال است).

--max-stack

حداکثر تعداد توابع برای نمایش در backtrace؛ پیش‌فرض ۵.

-C=, --cpu=

فقط رویدادهای مربوط به CPU(های) مشخص‌شده را نمایش بده (فهرست جداشده با کاما).

-p=, --pid=

فقط رویدادهای مربوط به شناسه فرایند (PID) مشخص‌شده را نمایش بده (فهرست جداشده با کاما).

-t=, --tid=

فقط رویدادهای مربوط به شناسه رشته (TID) مشخص‌شده را نمایش بده (فهرست جداشده با کاما).

-s, --summary

فقط خلاصه‌ای از زمان‌بندی بر حسب رشته همراه با کمینه، بیشینه و میانگین زمان‌های اجرا (به ثانیه) و انحراف معیار نسبی را نمایش بده.

-S, --with-summary

نمایش تمام رویدادهای زمان‌بندی و به دنبال آن خلاصه‌ای بر حسب رشته همراه با کمینه، بیشینه و میانگین زمان‌های اجرا (به ثانیه) و انحراف معیار نسبی.

--symfs=<directory[,layout]>

جستجوی فایل‌های حاوی نمادها نسبت به این دایرکتوری. چیدمان (layout) اختیاری می‌تواند hierarchy (پیش‌فرض، تطبیق با مسیر کامل) یا flat (تنها تطبیق با نام پایه) باشد. این گزینه زمانی کاربرد دارد که فایل‌های اشکال‌زدایی در یک ساختار دایرکتوری مسطح ذخیره شده باشند.

-V, --cpu-visual

نمایش راهنمای بصری برای تعویض‌های sched بر پایهٔ CPU: i زمان بیکاری (idle) را نشان می‌دهد و s رویدادهای زمان‌بند هستند.

-w, --wakeups

نمایش رویدادهای بیدارباش (wakeups).

-M, --migrations

نمایش رویدادهای مهاجرت (migrations).

-n, --next

نمایش وظیفهٔ بعدی (next task).

-I, --idle-hist

تنها نمایش رویدادهای مرتبط با حالت بیکاری (idle).

--time

فقط تحلیل نمونه‌های موجود در بازهٔ زمانی داده‌شده: <start>,<stop>. زمان‌ها دارای قالب ثانیه.میکروثانیه هستند. اگر زمان آغاز داده نشود (یعنی رشته زمان به‌صورت ,x.y باشد)، تحلیل از ابتدای فایل آغاز می‌شود. اگر زمان پایان داده نشود (یعنی رشته زمان به‌صورت x.y, باشد)، تحلیل تا انتهای فایل ادامه می‌یابد.

--state

نمایش وضعیت وظیفه هنگام خارج شدن از اجرا (switch out).

--show-prio

نمایش اولویت وظیفه.

--prio

فقط رویدادهای مربوط به اولویت(های) وظیفهٔ مشخص‌شده را نمایش بده. چندین اولویت می‌توانند به‌صورت یک فهرست جداشده با کاما و بدون فاصله ارائه شوند: 0,120. بازه‌های اولویت‌ها با - مشخص می‌شوند: 120-129. همچنین می‌توان ترکیبی از هر دو را ارائه کرد: 0,120-129. -P, --pre-migrations
نمایش زمان انتظار پیش از مهاجرت (pre-migration wait time). زمان انتظار پیش از مهاجرت، مدت زمانی است که یک تسک در یک runqueue منتظر می‌ماند اما فرصت اجرا در آنجا را به دست نمی‌آورد و به یک runqueue متفاوت مهاجرت داده می‌شود که در نهایت در آنجا اجرا می‌گردد. این زمان بین sched_wakeup و migrate_task همان زمان انتظار پیش از مهاجرت است.

-r, --repeat <n>

تکرار بار کاری (workload) به تعداد n بار (0: بی‌نهایت). پیش‌فرض 10 است.

perf-record(1)

09/04/2026 perf