pmqtest(8) pmqtest(8)
# SPDX-License-Identifier: GPL-2.0-or-later

pmqtest - راه‌اندازی جفت‌های نخ و سنجش تاخیر ارتباط بین‌فرآیندی با صف‌های پیام POSIX

pmqtest [-a|-a PROC] [-b USEC] [-d DIST] [-D TIME] [-f TO] [-h] [-i INTV] [--json FILENAME] [-l LOOPS] [-p PRIO] [-q] [-S] [-t|-t NUM]

برنامه pmqtest جفت‌هایی از نخ‌ها را آغاز می‌کند که از طریق mq_send/mw_receive() همگام‌سازی می‌شوند و تاخیر میان ارسال و دریافت پیام را می‌سنجد.

اجرا روی پردازنده شماره PROC. اگر PROC مشخص نشود، روی پردازنده فعلی اجرا می‌شود.
ارسال دستور break trace هنگامی که تاخیر > USEC باشد. این گزینه خطایابی برای کنترل ردیاب تاخیر در وصله بی‌درنگ (realtime preemption patch) است. برای پیگیری تاخیرهای بزرگ و غیرمنتظره در یک سیستم کاربرد دارد.
تنظیم فاصله بازه‌های نخ‌ها بر حسب میکروثانیه (پیش‌فرض ۵۰۰ میکروثانیه است). هنگامی که pmqtest با گزینه -t فراخوانی شود و بیش از یک نخ ایجاد گردد، این مقدار فاصله به بازه زمانی نخ‌ها اضافه می‌شود: Interval(thread N) = Interval(thread N-1) + DIST
تعیین مدت زمان اجرای آزمون.
افزودن 'm'، 'h' یا 'd' برای مشخص کردن دقیقه، ساعت یا روز.
نمایش پیام راهنما
تنظیم تاخیر مصنوعی در تابع ارسال برای اجبار به اتمام مهلت زمانی گیرنده، نیازمند گزینه -T است
تنظیم بازه زمانی پایه نخ‌ها بر حسب میکروثانیه (پیش‌فرض ۱۰۰۰ میکروثانیه است). این مقدار بازه نخ نخست را تعیین می‌کند. همچنین -d را ببینید.
نوشتن نتایج نهایی در FILENAME با قالب JSON.
تنظیم تعداد دورها. پیش‌فرض 0 (بی‌پایان) است. این گزینه برای آزمون‌های خودکار با تعداد چرخه‌های مشخص مفید است. پس از رسیدن به تعداد بازه‌های زمانی زمان‌سنج، pmqtest متوقف می‌شود.
تنظیم اولویت پردازش.
چاپ خلاصه فقط در هنگام خروج. مناسب برای آزمون‌های خودکار که تنها دریافت خروجی نهایی نیاز است.
حالت آزمون برای چندپردازشی متقارن (SMP)، متضمن استفاده از -a و -t و اولویت یکسان در تمام نخ‌ها.
تنظیم تعداد نخ‌های آزمون (اگر این گزینه داده نشود، پیش‌فرض ۱ است). اگر NUM مشخص شود، به همان تعداد نخ آزمایشی ایجاد می‌شود. اگر NUM مشخص نشود، NUM برابر تعداد پردازنده‌های موجود در نظر گرفته می‌شود.
استفاده از mq_timedreceive() به جای mq_receive() و تعیین مهلت زمانی TO بر حسب ثانیه.

مثال زیر روی یک پردازنده ۸-مسیره در حال اجرا بود:

# pmqtest -Sp99 -i100 -d0
#0: ID10047, P99, CPU0, I100; #1: ID10048, P99, CPU0, Cycles 153695
#2: ID10049, P99, CPU1, I100; #3: ID10050, P99, CPU1, Cycles 154211
#4: ID10051, P99, CPU2, I100; #5: ID10052, P99, CPU2, Cycles 156823
#6: ID10053, P99, CPU3, I100; #7: ID10054, P99, CPU3, Cycles 158202
#8: ID10055, P99, CPU4, I100; #9: ID10056, P99, CPU4, Cycles 153399
#10: ID10057, P99, CPU5, I100; #11: ID10058, P99, CPU5, Cycles 153992
#12: ID10059, P99, CPU6, I100; #13: ID10060, P99, CPU6, Cycles 156576
#14: ID10061, P99, CPU7, I100; #15: ID10062, P99, CPU7, Cycles 157957
#1 -> #0, Min    1, Cur    8, Avg    5, Max   18
#3 -> #2, Min    1, Cur    4, Avg    5, Max   18
#5 -> #4, Min    1, Cur    5, Avg    5, Max   19
#7 -> #6, Min    1, Cur    4, Avg    4, Max   17
#9 -> #8, Min    1, Cur    9, Avg    5, Max   18
#11 -> #10, Min    1, Cur    8, Avg    5, Max   18
#13 -> #12, Min    1, Cur    4, Avg    5, Max   29
#15 -> #14, Min    1, Cur    8, Avg    4, Max   17

Carsten Emde <C.Emde@osadl.org>

mq_send(3p), mq_receive(3p)

0.1