'\" t .\" Title: perf-bench .\" 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\-BENCH" "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-bench \- چارچوبی عمومی برای مجموعه‌های سنجش کارایی .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fIperf bench\fR [] [] .fi .SH "توضیحات (DESCRIPTION)" .sp دستور \fIperf bench\fR یک چارچوب عمومی برای مجموعه‌های سنجش کارایی (بنچمارک) است\&. .SH "گزینه‌های عمومی (COMMON OPTIONS)" .PP \-r, \-\-repeat= .RS 4 تعداد دفعات تکرار اجرا را مشخص می‌کند (پیش‌فرض ۱۰)\&. .RE .PP \-f, \-\-format= .RS 4 سبک قالب را مشخص می‌کند\&. سبک‌های قالب‌بندی موجود در حال حاضر عبارت‌اند از: .RE .PP \fIdefault\fR .RS 4 سبک پیش‌فرض\&. این سبک عمدتاً برای خواندن توسط انسان طراحی شده است\&. .RE .sp .if n \{\ .RS 4 .\} .nf \&.ft C % perf bench sched pipe # with no style specified (executing 1000000 pipe operations between two tasks) Total time:5\&.855 sec 5\&.855061 usecs/op 170792 ops/sec \&.ft .fi .if n \{\ .RE .\} .PP \fIsimple\fR .RS 4 این سبک ساده برای پردازش خودکار توسط اسکریپت‌ها مناسب است\&. .RE .sp .if n \{\ .RS 4 .\} .nf \&.ft C % perf bench \-\-format=simple sched pipe # specified simple 5\&.988 \&.ft .fi .if n \{\ .RE .\}.SH "زیرسیستم (SUBSYSTEM)" .PP \fIsched\fR .RS 4 سازوکارهای زمان‌بند و IPC\&. .RE .PP \fIsyscall\fR .RS 4 کارایی (توان عملیاتی) فراخوان‌های سیستمی\&. .RE .PP \fImem\fR .RS 4 کارایی دسترسی به حافظه\&. .RE .PP \fInuma\fR .RS 4 بنچمارک‌های زمان‌بندی NUMA و مدیریت حافظه (MM)\&. .RE .PP \fIfutex\fR .RS 4 بنچمارک‌های آزمون تنش futex\&. .RE .PP \fIepoll\fR .RS 4 بنچمارک‌های آزمون تنش Eventpoll (epoll)\&. .RE .PP \fIinternals\fR .RS 4 بنچمارک عملکردهای داخلی perf\&. .RE .PP \fIuprobe\fR .RS 4 بنچمارک سربار uprobe + BPF\&. .RE .PP \fIall\fR .RS 4 همهٔ زیرسیستم‌های بنچمارک\&. .RE .SS "مجموعه‌های آزمون برای \fIsched\fR (SUITES FOR \fIsched\fR)" .PP \fBmessaging\fR .RS 4 مجموعهٔ آزمون برای ارزیابی کارایی زمان‌بند و سازوکارهای IPC\&. بر پایهٔ hackbench اثر Rusty Russell\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBگزینه‌های messaging\fR .RS 4 .PP \-p, \-\-pipe .RS 4 استفاده از pipe() به‌جای socketpair() .RE .PP \-t, \-\-thread .RS 4 اجرا به‌صورت چندنخی (multi-thread) به‌جای چندفرآیندی (multi-process) .RE .PP \-g, \-\-group= .RS 4 مشخص کردن تعداد گروه‌ها .RE .PP \-l, \-\-nr_loops= .RS 4 مشخص کردن تعداد تکرارها (حلقه‌ها) .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBمثال messaging\fR .RS 4 .sp .if n \{\ .RS 4 .\} .nf \&.ft C % perf bench sched messaging # run with default options (20 sender and receiver processes per group) (10 groups == 400 processes run) Total time:0\&.308 sec % perf bench sched messaging \-t \-g 20 # be multi\-thread, with 20 groups (20 sender and receiver threads per group) (20 groups == 800 threads run) Total time:0\&.582 sec \&.ft .fi .if n \{\ .RE .\} .PP \fBpipe\fR .RS 4 مجموعهٔ آزمون برای فراخوان سیستمی pipe()\&. بر پایهٔ pipe\-test\-1m\&.c اثر Ingo Molnar\&. .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBگزینه‌های pipe\fR .RS 4 .PP \-l, \-\-loop= .RS 4 مشخص کردن تعداد تکرارها (حلقه‌ها)\&. .RE .PP \-G, \-\-cgroups= .RS 4 نام‌های cgroupها برای فرستنده و گیرنده، که با کاما از یکدیگر جدا شده‌اند\&. این گزینه برای بررسی سربار تعویض زمینهٔ (context switching) مربوط به cgroup مفید است\&. توجه داشته باشید که perf این cgroupها را ایجاد یا حذف نمی‌کند، بنابراین کاربران باید پیش از استفاده اطمینان حاصل کنند که این cgroupها وجود دارند و در دسترس هستند\&. .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBمثال pipe\fR .RS 4 .sp .if n \{\ .RS 4 .\} .nf \&.ft C % perf bench sched pipe (executing 1000000 pipe operations between two tasks) Total time:8\&.091 sec 8\&.091833 usecs/op 123581 ops/sec % perf bench sched pipe \-l 1000 # loop 1000 (executing 1000 pipe operations between two tasks) Total time:0\&.016 sec 16\&.948000 usecs/op 59004 ops/sec % perf bench sched pipe \-G AAA,BBB (executing 1000000 pipe operations between cgroups) # Running \*(Aqsched/pipe\*(Aq benchmark: # Executed 1000000 pipe operations between two processes Total time: 6\&.886 [sec] 6\&.886208 usecs/op 145217 ops/sec \&.ft .fi .if n \{\ .RE .\} .RE.SS "مجموعه‌ها برای \fIsyscall\fR" .PP \fBbasic\fR .RS 4 مجموعه‌ای برای ارزیابی کارایی توان عملیاتی فراخوانی‌های سیستمی پایه (هر دو معیار usecs/op و ops/sec)\&. این مجموعه از یک تک‌رشته استفاده می‌کند که صرفاً getppid(2) را اجرا می‌کند؛ یک فراخوانی سیستمی ساده که نتیجهٔ آن توسط glibc کَش نمی‌شود\&. .RE .SS "مجموعه‌ها برای \fImem\fR" .PP \fBmemcpy\fR .RS 4 مجموعه‌ای برای ارزیابی کارایی کپی سادهٔ حافظه به روش‌های گوناگون\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBگزینه‌های memcpy\fR .RS 4 .PP \-s, \-\-size .RS 4 تعیین اندازهٔ حافظه برای کپی (پیش‌فرض: 1MB)\&. واحدهای در دسترس عبارتند از B، KB، MB، GB و TB (غیرحساس به بزرگی و کوچکی حروف)\&. .RE .PP \-p, \-\-page .RS 4 تعیین اندازهٔ صفحه (page\-size) برای نگاشت بافرهای حافظه (پیش‌فرض: 4KB)\&. مقادیر در دسترس عبارتند از 4KB، 2MB و 1GB (غیرحساس به بزرگی و کوچکی حروف)\&. .RE .PP \-k, \-\-chunk .RS 4 تعیین اندازهٔ تکه (chunk\-size) برای هر فراخوانی\&. (پیش‌فرض: 0، یا full\-extent) واحدهای در دسترس عبارتند از B، KB، MB، GB و TB (غیرحساس به بزرگی و کوچکی حروف)\&. .RE .PP \-f, \-\-function .RS 4 تعیین تابع برای کپی (پیش‌فرض: default)\&. توابع در دسترس به معماری وابسته هستند\&. در x86\-64، موارد x86\-64\-unrolled، x86\-64\-movsq و x86\-64\-movsb پشتیبانی می‌شوند\&. .RE .PP \-l, \-\-nr_loops .RS 4 تکرار فراخوانی memcpy به این تعداد دفعات\&. .RE .PP \-c, \-\-cycles .RS 4 استفاده از رویداد cpu\-cycles در perf به‌جای فراخوانی سیستمی gettimeofday\&. .RE .PP \fBmemset\fR .RS 4 مجموعه‌ای برای ارزیابی کارایی مقداردهی سادهٔ حافظه به روش‌های گوناگون\&. .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBگزینه‌های memset\fR .RS 4 .PP \-s, \-\-size .RS 4 تعیین اندازهٔ حافظه برای مقداردهی (پیش‌فرض: 1MB)\&. واحدهای در دسترس عبارتند از B، KB، MB، GB و TB (غیرحساس به بزرگی و کوچکی حروف)\&. .RE .PP \-p, \-\-page .RS 4 تعیین اندازهٔ صفحه (page\-size) برای نگاشت بافرهای حافظه (پیش‌فرض: 4KB)\&. مقادیر در دسترس عبارتند از 4KB، 2MB و 1GB (غیرحساس به بزرگی و کوچکی حروف)\&. .RE .PP \-k, \-\-chunk .RS 4 تعیین اندازهٔ تکه (chunk\-size) برای هر فراخوانی\&. (پیش‌فرض: 0، یا full\-extent) واحدهای در دسترس عبارتند از B، KB، MB، GB و TB (غیرحساس به بزرگی و کوچکی حروف)\&. .RE .PP \-f, \-\-function .RS 4 تعیین تابع برای مقداردهی (پیش‌فرض: default)\&. توابع در دسترس به معماری وابسته هستند\&. در x86\-64، موارد x86\-64\-unrolled، x86\-64\-stosq و x86\-64\-stosb پشتیبانی می‌شوند\&. .RE .PP \-l, \-\-nr_loops .RS 4 تکرار فراخوانی memset به این تعداد دفعات\&. .RE .PP \-c, \-\-cycles .RS 4 استفاده از رویداد cpu\-cycles در perf به‌جای فراخوانی سیستمی gettimeofday\&. .RE .PP \fBmmap\fR .RS 4 مجموعه‌ای برای ارزیابی کارایی زیرسیستم حافظه برای حافظهٔ نگاشت‌شده با mmap()\&. .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBگزینه‌های mmap\fR .RS 4 .PP \-s, \-\-size .RS 4 تعیین اندازهٔ حافظه برای مقداردهی (پیش‌فرض: 1MB)\&. واحدهای در دسترس عبارتند از B، KB، MB، GB و TB (غیرحساس به بزرگی و کوچکی حروف)\&. .RE .PP \-p, \-\-page .RS 4 تعیین اندازهٔ صفحه (page\-size) برای نگاشت بافرهای حافظه (پیش‌فرض: 4KB)\&. مقادیر در دسترس عبارتند از 4KB، 2MB و 1GB (غیرحساس به بزرگی و کوچکی حروف)\&. .RE .PP \-r, \-\-randomize .RS 4 تعیین سید (seed) برای تصادفی‌سازی آفست دسترسی به صفحه (پیش‌فرض: 0، یا بدون تصادفی‌سازی)\&. .RE .PP \-f, \-\-function .RS 4 تعیین تابع برای تنظیم (پیش‌فرض: all)\&. توابع در دسترس عبارتند از \fIdemand\fR و \fIpopulate\fR، که اولی صفحات ناحیه را به‌صورت تقاضامحور (demand faulting) بارگذاری کرده و دومی از نگاشت مشتاقانه (eager mapping) استفاده می‌کند\&. .RE .PP \-l, \-\-nr_loops .RS 4 تکرار فراخوانی mmap() به این تعداد دفعات\&. .RE .PP \-c, \-\-cycles .RS 4 استفاده از رویداد cpu\-cycles در perf به‌جای فراخوانی سیستمی gettimeofday\&. .RE .PP \-t, \-\-threads= .RS 4 ایجاد چندین رشته برای فراخوانی هم‌روند mmap/munmap\&. .RE .RE.SS "مجموعه‌های آزمون برای \fInuma\fR" .PP \fBmem\fR .RS 4 مجموعه آزمون برای ارزیابی بارهای کاری NUMA\&. .RE .SS "مجموعه‌های آزمون برای \fIfutex\fR" .PP \fBhash\fR .RS 4 مجموعه آزمون برای ارزیابی جدول‌های درهم‌سازی (hash tables)\&. .RE .PP \fBwake\fR .RS 4 مجموعه آزمون برای ارزیابی فراخوانی‌های wake\&. .RE .PP \fBwake\-parallel\fR .RS 4 مجموعه آزمون برای ارزیابی فراخوانی‌های موازی wake\&. .RE .PP \fBrequeue\fR .RS 4 مجموعه آزمون برای ارزیابی فراخوانی‌های requeue\&. .RE .PP \fBlock\-pi\fR .RS 4 مجموعه آزمون برای ارزیابی فراخوانی‌های lock_pi در futex\&. .RE .SS "مجموعه‌های آزمون برای \fIepoll\fR" .PP \fBwait\fR .RS 4 مجموعه آزمون برای ارزیابی فراخوانی‌های هم‌روند epoll_wait\&. .RE .PP \fBctl\fR .RS 4 مجموعه آزمون برای ارزیابی فراخوانی‌های چندگانه epoll_ctl\&. .RE .SS "مجموعه‌های آزمون برای \fIinternals\fR" .PP \fBsynthesize\fR .RS 4 مجموعه آزمون برای ارزیابی کارایی سنتز رویدادهای perf\&. .RE .SH "همچنین ببینید (SEE ALSO)" .sp \fBperf\fR(1)