| hackbench(8) | hackbench(8) |
نام (NAME)
hackbench - آزمون ارزیابی کارایی و سنجش فشار برای زمانبند هسته
خلاصه دستور (SYNOPSIS)
hackbench [-f|--fds NUM] [-F|--fifo] [-g|--groups NUM] [-h|--help] [-l|--loops LOOPS] [-p|--pipe] [-s|--datasize SIZE] [-T|--threads] [-P|--process]
توضیحات (DESCRIPTION)
ابزار Hackbench هم یک محک (benchmark) و هم یک آزمون سنجش فشار (stress test) برای زمانبند هسته لینوکس است. وظیفه اصلی آن ایجاد تعداد مشخصی از جفتهای موجودیتهای قابل زمانبندی (یا ریسهها یا فرآیندهای سنتی) است که از طریق سوکتها یا لولهها ارتباط برقرار میکنند، و اندازهگیری مدت زمانی که طول میکشد تا هر جفت دادهها را رفت و برگشت ارسال کنند.
گزینهها (OPTIONS)
این
برنامهها
از ساختار
نحوی معمول
خط فرمان
گنو پیروی
میکنند که
در آن
گزینههای
طولانی با
دو خط تیره
("--") آغاز
میشوند.
خلاصهای
از
گزینهها
در ادامه
آمده است:
- -f, --fds=NUM
- تعیین میکند هر فرآیند فرزند چه تعداد توصیفگر فایل باید استفاده کند. توجه داشته باشید که تعداد مؤثر دو برابر مقداری خواهد بود که در اینجا مشخص میکنید، زیرا هر یک از فرزندان فرستنده و گیرنده این تعداد توصیفگر فایل را باز خواهند کرد.
- -F,--fifo
- تغییر زمانبندی ریسه اصلی به SCHED_FIFO پس از ایجاد کارگران (workers). این امر به ریسه مدیریت اجازه میدهد تا پس از ایجاد تعداد زیادی فرآیند فرزند نیز اجرا شود.
- -g, --groups=NUM
- تعیین تعداد گروههای فرستنده و گیرنده که باید راهاندازی شوند.
- -h, --help
- نمایش صفحه راهنمای ساده.
- -l, --loops=LOOPS
- تعداد پیامهایی که هر جفت فرستنده/گیرنده باید ارسال کند.
- -p, --pipe
- ارسال دادهها از طریق لوله (pipe) به جای سوکت (پیشفرض).
- -s, --datasize=SIZE
- تنظیم حجم دادههای ارسالی در هر پیام.
- -T, --threads
- هر فرزند فرستنده/گیرنده به صورت یک ریسه POSIX از فرآیند والد خواهد بود.
- -P, --process
- ابزار Hackbench روی تمامی فرزندان از fork() استفاده خواهد کرد (رفتار پیشفرض).
مثالها (EXAMPLES)
اجرای hackbench بدون هیچ گزینهای رفتار پیشفرض را در بر خواهد داشت؛ استفاده از fork() و ارسال دادهها میان فرستندهها و گیرندهها از طریق سوکت:
user@host: ~ $ hackbench Running in process mode with 10 groups using 40 file descriptors each (== 400 tasks) Each sender will pass 100 messages of 100 bytes Time: 0.890
برای استفاده از لولهها میان فرستندهها و گیرندهها و به کار بردن ریسهها به جای fork():
user@host: ~ $ hackbench --pipe --threads (or hackbench -p -T) Running in threaded mode with 10 groups using 40 file descriptors each (== 400 tasks) Each sender will pass 100 messages of 100 bytes Time: 0.497
تنظیم اندازه دادهها به ۵۱۲ بایت، ارسال ۲۰۰ پیام به ازای هر جفت فرستنده/گیرنده و استفاده از ۱۵ گروه با ۲۵ توصیفگر فایل به ازای هر فرزند، در حالت فرآیند:
user@host: ~ $ hackbench -s 512 -l 200 -g 15 -f 25 -P Running in process mode with 15 groups using 50 file descriptors each (== 750 tasks) Each sender will pass 200 messages of 512 bytes Time: 4.497
نویسندگان (AUTHORS)
ابزار hackbench توسط Rusty Russell <rusty@rustcorp.com.au> نوشته شده است، با مشارکتهایی از جانب Yanmin Zhang <yanmin_zhang@linux.intel.com>، Ingo Molnar <mingo@elte.hu> و David Sommerseth <davids@redhat.com>.
این صفحه راهنما توسط Clark Williams <williams@redhat.com> و David Sommerseth <davids@redhat.com> نگاشته شده است.
تاریخچه (HISTORY)
این نسخه
از hackbench بر پایه
کدی است که
از نشانی
http://people.redhat.com/mingo/cfs-scheduler/tools/hackbench.c
دریافت شده
است. Yanmin Zhang کد
اصلی hackbench
برگرفته از
http://devresources.linuxfoundation.org/craiger/hackbench/src/hackbench.c
را که از fork()
استفاده
میکرد، با
نسخه
تغییریافتهای
از
http://www.bullopensource.org/posix/pi-futex/hackbench_pth.c
که تنها از pthread
استفاده
میکرد
ادغام کرد و
امکان
تغییر
رفتار در
زمان اجرا
را فراهم
ساخت. از آن
زمان، Hackbench
بازنویسیهای
بیشتری را
برای بهبود
مدیریت
خطاها و
ردیابی
مناسب
فرزندان
مشتقشده
با fork() تجربه
کرده است تا
در صورت
توقف
غیرمنتظره،
فرآیند
زامبی بر
روی سیستم
باقی
نماند.
| September 19, 2020 |