PERF-LOCK(1) perf Manual PERF-LOCK(1)

perf-lock - تحلیل رویدادهای قفل

perf lock {record|report|script|info|contention}

با دستور perf lock می‌توانید رفتارها و آمار گوناگون قفل‌ها را تحلیل کنید.

دستور 'perf lock record <command>' رویدادهای قفل را بین
شروع و پایان <command> ضبط می‌کند. همچنین این دستور
فایل "perf.data" را تولید می‌کند که حاوی نتایج
ردگیری رویدادهای قفل است.
دستور 'perf lock report' داده‌های آماری را گزارش می‌دهد.
دستور 'perf lock script' رویدادهای خام قفل را نمایش می‌دهد.
دستور 'perf lock info' فراداده‌هایی مانند رشته‌ها یا نشانی‌های
نمونه‌های قفل را نمایش می‌دهد.
دستور 'perf lock contention' آمار رقابت قفل را نمایش می‌دهد.

-i, --input=<file>

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

--output=<file>

نام فایل خروجی برای perf lock contention و report.

-v, --verbose

اطلاعات با جزئیات بیشتر (نمایش آدرس نمادها و غیره).

-q, --quiet

هیچ هشدار یا پیامی نمایش داده نشود. (خنثی‌سازی -v)

-D, --dump-raw-trace

تخلیهٔ ردگیری خام (raw trace) به صورت ASCII.

-f, --force

شکایت نکن، انجامش بده.

--vmlinux=<file>

مسیر فایل vmlinux

--kallsyms=<file>

مسیر فایل kallsyms

-k, --key=<value>

کلید مرتب‌سازی. مقادیر ممکن: acquired (پیش‌فرض)، contended، avg_wait، wait_total، wait_max، wait_min.

-F, --field=<value>

فیلدهای خروجی. به‌طور پیش‌فرض تمامی فیلدها نمایش داده می‌شوند، اما کاربران می‌توانند با استفاده از این گزینه آن را سفارشی‌سازی کنند. مقادیر ممکن: acquired، contended، avg_wait، wait_total، wait_max، wait_min.

-c, --combine-locks

ادغام نمونه‌های قفل در یک کلاس یکسان (بر اساس نام).

-t, --threads

گزینهٔ -t برای نمایش آمار قفل بر اساس هر رشته (per-thread) مانند زیر است:
$ perf lock report -t -F acquired,contended,avg_wait
Name   acquired  contended   avg wait (ns)
           perf     240569          9            5784
        swapper     106610         19             543
         :15789      17370          2           14538
   ContainerMgr       8981          6             874
          sleep       5275          1           11281
ContainerThread       4416          4             944
RootPressureThr       3215          5            1215
    rcu_preempt       2954          0               0
   ContainerMgr       2560          0               0
        unnamed       1873          0               0
EventManager_De       1845          1             636
futex-default-S       1609          0               0

-E, --entries=<value>

نمایش این تعداد مدخل.

-t, --threads

تنها برون‌ریزی فهرست threadها در perf.data.

-m, --map

تنها برون‌ریزی نگاشت نمونه‌های قفل (جدول address:name).

-k, --key=<value>

کلید مرتب‌سازی. مقادیر ممکن: contended، wait_total (پیش‌فرض)، wait_max، wait_min، avg_wait.

-F, --field=<value>

فیلدهای خروجی. به‌طور پیش‌فرض تمام فیلدها به جز فیلدهای wait_min نمایش داده می‌شوند و کاربران می‌توانند با استفاده از این گزینه آن را سفارشی‌سازی کنند. مقادیر ممکن: contended، wait_total، wait_max، wait_min، avg_wait.

-t, --threads

نمایش آمار رقابت قفل به ازای هر thread.

-b, --use-bpf

استفاده از برنامه BPF برای جمع‌آوری آمار رقابت قفل به جای استفاده از داده‌های ورودی.

-a, --all-cpus

جمع‌آوری در سطح کل سیستم از تمام CPUها.

-C, --cpu=<value>

جمع‌آوری نمونه‌ها تنها روی فهرست CPUهای ارائه‌شده. چندین CPU را می‌توان به صورت فهرستی جداشده با کاما و بدون فاصله مشخص کرد: 0,1. بازه‌های CPU با - مشخص می‌شوند: 0-2. مقدار پیش‌فرض نظارت بر تمام CPUها است.

-p, --pid=<value>

ثبت رویدادها روی شناسه فرایند (PID) موجود (فهرست جداشده با کاما).

--tid=<value>

ثبت رویدادها روی شناسه thread موجود (فهرست جداشده با کاما).

-M, --map-nr-entries=<value>

حداکثر تعداد مدخل‌های نگاشت BPF (پیش‌فرض: 16384). این مقدار به توانی از ۲ تراز خواهد شد.

--max-stack=<value>

حداکثر عمق پشته هنگام جمع‌آوری رقابت قفل (پیش‌فرض: 8).

--stack-skip=<value>

تعداد سطوح عمق پشته برای نادیده‌گرفتن هنگام یافتن فراخواننده قفل (پیش‌فرض: 3).

-E, --entries=<value>

نمایش این تعداد مدخل.

-l, --lock-addr

نمایش آمار رقابت قفل بر اساس آدرس.

-o, --lock-owner

نمایش آمار رقابت قفل بر اساس مالکان. این گزینه می‌تواند با -t که آمار قفل هر thread مالک را نشان می‌دهد، یا -v که ردپای پشته مالک را نشان می‌دهد ترکیب شود. نیازمند --use-bpf است.

-Y, --type-filter=<value>

نمایش رقابت قفل تنها برای انواع قفل مشخص‌شده (فهرست جداشده با کاما). مقادیر موجود عبارتند از: semaphore, spinlock, rwlock, rwlock:R, rwlock:W, rwsem, rwsem:R, rwsem:W, rtmutex, rwlock-rt, rwlock-rt:R, rwlock-rt:W, percpu-rwmem, pcpu-sem, pcpu-sem:R, pcpu-sem:W, mutex
توجه داشته باشید که گونه‌های RW قفل‌ها دارای پسوند :R و :W هستند.  نام‌های بدون
پسوند میان‌بُری برای هر دو گونه می‌باشند.  مثال: rwsem = rwsem:R + rwsem:W.

-L, --lock-filter=<value>

نمایش رقابت قفل تنها برای آدرس‌ها یا نام‌های قفل ارائه‌شده (فهرست جداشده با کاما).

-S, --callstack-filter=<value>

نمایش رقابت قفل تنها در صورتی که callstack شامل رشته ارائه‌شده باشد. توجه داشته باشید که این گزینه با زیررشته تطبیق داده می‌شود، بنابراین rq هم با raw_spin_rq_lock و هم با irq_enter_rcu مطابقت خواهد داشت.

-x, --field-separator=<SEP>

نمایش نتایج با استفاده از خروجی سبک CSV جهت تسهیل وارد کردن مستقیم به صفحات گسترده. ستون‌ها با رشته مشخص‌شده در SEP جدا می‌شوند.

--lock-cgroup

نمایش آمار رقابت قفل بر اساس cgroup. نیازمند --use-bpf است.

-G, --cgroup-filter=<value>

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

-J, --inject-delay=<time@function[1]>

افزودن تاخیر به قفل مشخص‌شده. این تاخیر به بخش پایانی رقابت افزوده می‌شود تا مالک (جدید) قفل دچار تاخیر شود. اما با کند کردن مالک، سایر منتظران نیز دچار تاخیر خواهند شد. این قابلیت تنها با -b/--use-bpf کار می‌کند.
مقدار 'time' به نانوثانیه مشخص می‌شود اما می‌تواند پسوند واحد داشته باشد.  واحدهای
موجود "ms" ،"us" و "ns" هستند.  در حال حاضر به دلایل ایمنی تا حداکثر 10ms تاخیر
پذیرفته می‌شود.
توجه داشته باشید که پس از گرفتن قفل، انتظار فعال (busy-wait) رخ خواهد داد.  ایجاد تاخیر
در قفل‌ها می‌تواند پیامدهای چشمگیری از جمله احتمال کرش هسته داشته باشد.  لطفاً
با مسئولیت خودتان از آن استفاده کنید.

perf(1)

1.
time@function
mailto:time@function
09/04/2026 perf