CYCLICTEST(8) System Manager's Manual CYCLICTEST(8)
# SPDX-License-Identifier: GPL-2.0-only

cyclictest - برنامه آزمایش دقت بالا برای سنجش تأخیر

cyclictest [ -hfmnqrsvMS ] [-a proc ] [-A aligned ] [-b usec ] [-c clock ] [-d dist ] [-h histogram ] [-i intv ] [--json filename ] [-l loop ] [-o red ] [-p prio ] [-t num ] [-D time] [-w] [-W] [-y policy ] [ -S | -U ]

این برنامه‌ها از قواعد نحوی معمول خط فرمان GNU پیروی می‌کنند که در آن گزینه‌های طولانی با دو خط تیره ('--') شروع می‌شوند.
خلاصه‌ای از گزینه‌ها در زیر آمده است.

اجرای ریسه‌ها روی مجموعه‌ای از پردازنده‌ها که با PROC-SET مشخص شده‌اند. اگر PROC-SET مشخص نشود، از تمام پردازنده‌ها استفاده خواهد شد. ریسه‌ها به ترتیب عددی و به روش نوبت‌گردشی (round-robin) به پردازنده‌های موجود در مجموعه اختصاص می‌یابند.
مجموعه پردازنده‌ها می‌تواند به صورت A,B,C یا A-C یا A-B,D-F و غیره مشخص شود*. از نویسه ! می‌توان برای نفی یک مجموعه استفاده کرد؛ برای نمونه، !B-D به معنای استفاده از تمام پردازنده‌های در دسترس به جز B تا D است. شماره پردازنده‌ها همان شماره‌های نمایش‌یافته در فیلد processor در /proc/cpuinfo است. برای اطلاعات بیشتر درباره نحوه تعیین مجموعه‌های CPU به numa(3) مراجعه کنید. * پشتیبانی از مجموعه‌های CPU نیازمند نسخه ۲ یا بالاتر libnuma است. برای libnuma نسخه ۱، در صورت تعیین PROC-SET، مقدار آن باید تنها یک شماره CPU باشد.
تراز کردن بیداری ریسه‌ها با یک آفست مشخص بر حسب میکروثانیه
ارسال دستور توقف ردیابی (break trace) هنگامی که تاخیر بیش از USEC باشد
انتخاب ساعت
0 = CLOCK_MONOTONIC (پیش‌فرض)
1 = CLOCK_REALTIME
کاهش تأخیر خروج از حالت بیکاری (idle) با محدود کردن وضعیت بیکاری تا n روی پردازنده‌های مورد استفاده (-1 تمام وضعیت‌های بیکاری را غیرفعال می‌کند). مدیریت مصرف انرژی روی سایر پردازنده‌ها متوقف نمی‌شود.
عدم تلاش برای تنظیم و بهینه‌سازی سیستم از طریق cyclictest. مدیریت مصرف انرژی متوقف نمی‌شود. این ممکن است نتایج ضعیف‌تری ایجاد کند، اما امکان تشخیص نیاز به تنظیم سیستم را فراهم می‌آورد.
فاصله زمانی بین فواصل ریسه‌ها بر حسب میکروثانیه، پیش‌فرض = ۵۰۰
تعیین مدت‌زمان اجرای آزمایش.
افزودن 'm' برای دقیقه، 'h' برای ساعت، یا 'd' برای روز.
ایجاد یک لوله نام‌گذاری‌شده (named pipe) در path و نوشتن آمار در آن
تخلیه نمودار توزیع فراوانی (هیستوگرام) تأخیر در stdout پس از پایان اجرا. US بیشینه زمان تأخیر بر حسب میکروثانیه برای رهگیری است. این گزینه تمام ریسه‌ها را با اولویت یکسان اجرا می‌کند.
مشابه ‎-h با این تفاوت که یک ستون هیستوگرام اضافی در سمت راست نمایش داده می‌شود که حاوی داده‌های خلاصه همه هیستوگرام‌های ریسه‌ها است. اگر cyclictest فقط با یک ریسه اجرا شود، گزینه ‎-H معادل ‎-h خواهد بود.
تخلیه هیستوگرام تأخیر در <path> به جای stdout.
تنظیم فاصله پایه ریسه(ها) بر حسب میکروثانیه (پیش‌فرض ۱۰۰۰ میکروثانیه است). این مقدار، فاصله نخستین ریسه را تنظیم می‌کند. همچنین به -d نگاه کنید.
نوشتن نتایج نهایی در FILENAME با قالب‌بندی JSON.
صرفه‌جویی در باتری هنگام اجرای cyclictest. این گزینه نتایج بادرنگ (realtime) ضعیف‌تری تولید می‌کند، اما باتری را با سرعت کمتری تخلیه خواهد کرد.
مقدار هدف تأخیر مدیریت توان. این مقدار در /dev/cpu_dma_latency نوشته می‌شود و وضعیت‌های c-states را تحت تأثیر قرار می‌دهد. پیش‌فرض 0 است
تنظیم تعداد حلقه‌ها. مقدار پیش‌فرض 0 (بی‌پایان) است. این گزینه برای آزمون‌های خودکار با تعداد چرخه‌های آزمایشی معین کاربرد دارد. cyclictest پس از رسیدن به تعداد فواصل زمانی زمان‌سنج متوقف می‌شود.
اجرای ریسه اصلی روی CPU شماره N. این تنظیم فقط ریسه اصلی را تحت تأثیر قرار می‌دهد و بر ریسه‌های اندازه‌گیری تأثیری ندارد
قفل کردن تخصیص‌های حافظه فعلی و آتی در حافظه اصلی به منظور جلوگیری از تعویض به دیسک (paged out)
به تعویق انداختن به‌روزرسانی صفحه نمایش تا زمان ثبت یک رکورد بیشینه تأخیر جدید. (برای اجرای cyclictest روی اتصالات با پهنای باند کم مفید است)
نمایش نتایج بر حسب نانوثانیه به جای میکروثانیه که واحد پیش‌فرض است.
حالت نوسان‌نما (Oscilloscope)، کاهش حجم خروجی با ضریب RED.
تنظیم اولویت اولین ریسه. اولویت داده‌شده به نخستین ریسه آزمایشی اختصاص می‌یابد. هر ریسه بعدی اولویت کمتری دریافت می‌کند: Priority(Thread N) = max(Priority(Thread N-1) - 1, 0)
تنظیم سیاست زمان‌بندی ریسه‌های اندازه‌گیری که در آن NAME یکی از این مقادیر است: other, normal, batch, idle, fifo, rr
گسترش سطوح اولویت با شروع از یک مقدار مشخص
چاپ خلاصه تنها هنگام خروج. برای آزمون‌های خودکار که در آن‌ها تنها دریافت خروجی خلاصه نیاز است کاربرد دارد.
استفاده از زمان‌سنج‌های نسبی به جای مطلق. رفتار پیش‌فرض آزمون‌ها استفاده از زمان‌سنج‌های مطلق است. این گزینه برای کامل بودن تعبیه شده و نباید برای آزمون‌های با قابلیت تکرارپذیری استفاده شود.
بررسی وضوح ساعت با فراخوانی مکرر ()clock_gettime. فهرستی از مقادیر ()clock_gettime با ‎-X گزارش می‌شود
تراز کردن زمان بیداری ریسه‌ها با ثانیه کامل بعدی و اعمال آفست اختیاری.
استفاده از sys_nanosleep و sys_setitimer به جای زمان‌سنج‌های posix. توجه داشته باشید که -s فقط با یک ریسه قابل استفاده است زیرا itimerها برای کل فرایند هستند نه برای هر ریسه. گزینه -s از فراخوانی سیستمی nanosleep استفاده می‌کند و به یک ریسه محدود نیست.
تنظیم گزینه‌ها برای آزمون استاندارد روی سیستم‌های چندپردازنده‌ای متقارن (SMP). معادل استفاده از گزینه‌های "-t -a" و همچنین یکسان نگه داشتن اولویت تعیین‌شده در میان تمامی ریسه‌ها
ثبت تمامی جهش‌های ناگهانی تأخیر (spikes) بزرگتر از trigger
این مقدار بیشینه تعداد جهش‌هایی است که می‌توان ثبت کرد.
در صورت عدم تعیین، مقدار پیش‌فرض ۱۰۲۴ است.
فعال‌سازی شمارش و تشخیص SMI روی پردازنده‌های دارای پشتیبانی از شمارش SMI.
تنظیم تعداد ریسه‌های آزمایشی (پیش‌فرض ۱ است). ایجاد NUM ریسه آزمایشی. اگر NUM تعیین نشود، NUM برابر با تعداد پردازنده‌های در دسترس تنظیم می‌شود. برای اطلاعات بیشتر به -d، -i و -p مراجعه کنید.
نوشتن یک علامت ردیابی (trace mark) هنگامی که تأخیر از -b فراتر رود.
اجبار خروجی بدون بافر برای پردازش بلادرنگ
نمایش مقادیر در خروجی استاندارد stdout برای آمارگیری. این گزینه برای گردآوری اطلاعات آماری درباره توزیع تأخیر استفاده می‌شود. خروجی به stdout ارسال می‌شود. قالب خروجی چنین است:
n:c:v

که در آن n=شماره وظیفه، c=تعداد شمارش، و v=مقدار تأخیر بر حسب میکروثانیه است.

چاپ اطلاعات مفید برای اشکال‌زدایی cyclictest
استفاده از زمان‌سنج‌های POSIX به جای clock_nanosleep.

numa(3), numactl(8)

برنامه cyclictest توسط Thomas Gleixner <tglx@linuxtronix.de> نوشته شده است.

این صفحه راهنما توسط Alessio Igor Bogani <abogani@texware.it> برای پروژه دبیان نوشته شده است (اما دیگران نیز می‌توانند از آن استفاده کنند).
به‌روزرسانی‌شده توسط John Kacur <jkacur@redhat.com>

April 22, 2016