CMTIME(1) librdmacm CMTIME(1)

cmtime - آزمون زمان‌بندی گام‌های برقراری اتصال RDMA CM

cmtime -C controller_address
		(-B bind_interface | -b bind_address)
		[-L]
		[-c connections_per_pair] [-P num_peers]
		[-p controller_port]
		[-q base_qpn] [-n num_threads]
		[-m mimic_qp_delay_us] [-r retries]
		[-t timeout_ms]
		[-S]

زمان‌های کمینه، بیشینه و میانگین را برای «گام‌ها»ی مختلف در برپایی و برچیدن اتصال RDMA CM میان کلاینت‌ها و سرورها تعیین می‌کند.

برای استفاده، یک یا چند سرور (-L) را به همراه یک یا چند کلاینت اجرا کنید. هر کلاینت به تعداد -c اتصال با هر سرور برقرار خواهد کرد. به‌طور پیش‌فرض، آزمون با ۱ کلاینت و ۱ سرور اجرا می‌شود.

یک فرایند به‌عنوان فرایند کنترل‌کننده عمل خواهد کرد. کنترل‌کننده کلاینت‌ها و سرورها را هماهنگ می‌کند -- از سوکت‌های برون‌باند (out-of-band) برای گردآوری و توزیع آدرس‌ها استفاده کرده و با پیشرفت در هر «گام»، کلاینت‌ها و سرورها را همگام نگه می‌دارد.

«گام‌ها»یی که زمان‌بندی می‌شوند عبارت‌اند از: create ID، bind address، resolve address، resolve route، create QP، modify QP to INIT، modify QP to RTR، modify QP to RTS، CM connect، client establish، disconnect، destroy QP و destroy ID.

بسیاری از عملیات‌ها ناهمگام (asynchronous) هستند که امکان پیشرفت هم‌زمان چندین اتصال را فراهم می‌کند. خروجی «sum» مجموع زمان‌هایی را که همهٔ اتصالات برای یک گام معین صرف کرده‌اند نشان می‌دهد. میانگین «us/conn» حاصل تقسیم مجموع بر تعداد اتصالات است. این مقدار برای شناسایی گام‌هایی که زمان قابل‌توجهی می‌برند مفید است. مقادیر min و max به ترتیب کوتاه‌ترین و طولانی‌ترین زمانی هستند که یک اتصال تکی برای تکمیل یک گام معین صرف کرده است.

زمان‌های «total» و «avg/iter» زمان تکمیل یک گام معین را برای همهٔ اتصالات اندازه‌گیری می‌کنند. این دو مقدار، عملیات‌های ناهمگام را در نظر می‌گیرند. برای گام‌هایی که ترتیبی (serial) هستند، مقادیر total و sum تقریباً یکسان خواهند بود. برای گام‌های ناهمگام، total ممکن است به‌میزان قابل‌توجهی کمتر از sum باشد، زیرا چندین اتصال به‌طور هم‌زمان در جریان خواهند بود. مقدار avg/iter حاصل تقسیم زمان کل (total) بر تعداد اتصالات است.

در بسیاری از موارد، ممکن است زمان‌ها در دسترس نباشند یا فقط در سمت کلاینت‌ها در دسترس باشند. در چنین شرایطی، خروجی مقدار 0 را نشان خواهد داد. آمارهای چاپ‌شده توسط هر نمونه (instance) مربوط به اتصالاتی است که توسط همان نمونه مدیریت شده‌اند -- در اجراهایی با چندین کلاینت و/یا سرور (-P > 2) ممکن است به تجمیع خارجی بیشتری نیاز باشد.

نام شبکه یا آدرس IP نمونه‌ای که همگام‌سازی گام‌ها را انجام می‌دهد. این گزینه باید توسط همهٔ نمونه‌ها مشخص شود. نخستین نمونه‌ای که اجرا شود و این آدرس را محلی تشخیص دهد، به‌عنوان کنترل‌کننده عمل خواهد کرد و هم‌زمان با پیشرفت گام‌های بنچمارک، سایر نمونه‌ها را از طریق یک کانال برون‌باند (out-of-band) همگام می‌سازد. هر نوع نمونه‌ای (کلاینت یا سرور) می‌تواند به‌عنوان کنترل‌کننده عمل کند.
رابط RDMA محلی برای bind شدن به آن. تنها یکی از گزینه‌های -B یا -b پذیرفته می‌شود.
آدرس شبکهٔ محلی برای bind شدن به آن. تنها یکی از گزینه‌های -B یا -b پذیرفته می‌شود.
مشخص می‌کند که آیا این نمونه یک سرور RDMA CM است (تنظیم‌شده) یا کلاینت (تنظیم‌نشده). (پیش‌فرض کلاینت/تنظیم‌نشده) -c connections_per_pair تعداد اتصالاتی که باید بین هر جفت کلاینت-سرور برقرار شود. (پیش‌فرض 100)
تعداد کل همتایان (کلاینت‌ها، سرورها) که قرار است راه‌اندازی شوند. (پیش‌فرض 2)
شماره درگاه (پورت) کنترل‌کننده.
نخستین شمارهٔ QP برای استفاده هنگام ایجاد اتصالات بدون تخصیص سخت‌افزاری QPها. در هنگام اتصال، آزمون از مقادیر بین base_qpn و base_qpn به‌علاوه اتصالات استفاده خواهد کرد. (پیش‌فرض 1000)
تعداد رشته‌هایی (threads) را تعیین می‌کند که برای پردازش رویدادهای اتصال و عملیات‌های سخت‌افزاری ایجاد می‌شوند. (پیش‌فرض 1)
فراخوانی‌های ایجاد و تغییر (modify) در QP را با جایگزین کردن آن‌ها با یک تابع sleep ساده «شبیه‌سازی» می‌کند. این کار امکان آزمایش CM را در مقیاسی بزرگ‌تر از آنچه در صورت نیاز به تخصیص منابع سخت‌افزاری عملی یا با توجه به تنظیمات سیستم ممکن بود، فراهم می‌سازد.
تعداد تلاش‌های مجدد هنگام تحلیل (resolve) آدرس یا مسیر. (پیش‌فرض 2)
اجرای آزمون نرخ اتصال با استفاده از سوکت‌ها. این گزینه یک مقایسهٔ پایه‌ای میان اتصالات RDMA در برابر اتصالات TCP فراهم می‌کند. سوکت‌ها در حالت مسدودکننده (blocking) تنظیم می‌شوند. فقط در حالت ۱ کلاینت و ۱ سرور (-P 2) پشتیبانی می‌شود.
مهلت زمانی به میلی‌ثانیه (ms) هنگام تحلیل آدرس یا مسیر. (پیش‌فرض 2000 - ۲ ثانیه)

اتصال یک کلاینت به یک سرور:


server$ cmtime -B enp1s0f0np0 -C 192.0.2.1 -L
client$ cmtime -B enp1s0f0np0 -C 192.0.2.1

اتصال دو کلاینت به سه سرور، در مجموع ۶ هزار اتصال:


client1$ cmtime -B enp1s0f0np0 -P 5 -C 192.0.2.1 -c 1000
client2$ cmtime -B enp1s0f0np0 -P 5 -C 192.0.2.1 -c 1000
server1$ cmtime -B enp1s0f0np0 -P 5 -C 192.0.2.1 -c 1000 -L
server2$ cmtime -B enp1s0f0np0 -P 5 -C 192.0.2.1 -c 1000 -L
server3$ cmtime -B enp1s0f0np0 -P 5 -C 192.0.2.1 -c 1000 -L

از آنجا که این آزمون منابع RDMA را به فضای کاربری (userspace) نگاشت می‌کند، کاربران باید اطمینان حاصل کنند که منابع سیستمی و مجوزهای لازم را در اختیار دارند. برای جزئیات بیشتر به فایل README مربوط به libibverbs مراجعه کنید.

rdma_cm(7)

2025-09-03 librdmacm