IBV_RC_PINGPONG(1)
π ibv_rc_pingpong π
okay bestie, gather round, because today we're talking about ibv_rc_pingpong β a little tool from the libibverbs fam that runs a simple ping-pong test over InfiniBand using the reliable connected (RC) transport. yes, RC like really committed, unlike some transports we could name. π«Ά
β¨ NAME β¨
ibv_rc_pingpong β simple InfiniBand RC transport test, no cap
π SYNOPSIS π
ibv_rc_pingpong [-p port] [-d device] [-i ib port] [-s size] [-m size]
[-r rx depth] [-n iters] [-l sl] [-e] [-g gid index] [-o] [-P] [-t] [-j]
[-N] HOSTNAME
ibv_rc_pingpong [-p port] [-d device] [-i ib port] [-s size] [-m size]
[-r rx depth] [-n iters] [-l sl] [-e] [-g gid index] [-o] [-P] [-t] [-j]
[-N]
like, one of these has a HOSTNAME and one doesn't. that's the whole difference. one is the server main character, one is the client. you'll figure it out π
π¦ DESCRIPTION π¦
Run a simple ping-pong test over InfiniBand via the reliable connected (RC) transport.
that's it. that's the vibe. you bounce messages back and forth over RC and see how it goes. it's giving networking but make it a duet β¨
πΈ OPTIONS πΈ
so many flags, so little time. let's go one by one, bestie, because none of these are optional to know about:
-p,--port=PORTβ use TCP portPORTfor initial synchronization (default18515). this is just the lil handshake so the two sides can find each other, it's not the IB magic itself π-d,--ib-dev=DEVICEβ use IB deviceDEVICE(default is the first device found). if you don't pick one, it just grabs whatever shows up first, iconic behavior honestly-i,--ib-port=PORTβ use IB portPORT(default port1)-s,--size=SIZEβ ping-pong messages of sizeSIZE(default4096)-m,--mtu=SIZEβ path MTUSIZE(default1024)-r,--rx-depth=DEPTHβ postDEPTHreceives at a time (default1000). like, queue up a whole stack of them π-n,--iters=ITERSβ performITERSmessage exchanges (default1000)-l,--sl=SLβ useSLas the service level value of the QP (default0)-e,--eventsβ sleep while waiting for work completion events (default is to poll for completions). so instead of spinning like an overcaffeinated gremlin, you nap until something happens π΄-g,--gid-idx=GIDINDEXβ local portGIDINDEX-o,--odpβ use on demand paging-P,--prefetch=β prefetch an ODP MR-t,--tsβ get CQE with timestamp-c,--chkβ validate received buffer. yes queen, verify your data π-j,--dmβ use device memory-N,--new_sendβ use new post send WR API
π SEE ALSO π
the whole pingpong cinematic universe, fr fr:
π AUTHORS π
Roland Dreier β <rolandd@cisco.com>
thank you for your service, king π«‘β¨
π BUGS π
okay so this is the part where we're honest, and ngl it's a little messy:
The network synchronization between client and server instances is weak, and does not prevent incompatible options from being used on the two instances. The method used for retrieving work completions is not strictly correct, and race conditions may cause failures on some systems.
translation: the two sides are texting each other with no read receipts, and if you give them mismatched options they will simply Not Notice. and the completion-fetching method has some race-condition chaos in it. so like, be aware. not me warning you though π
and that's the whole page, bestie!! this one came from libibverbs, dated August 30, 2005 β a true elder of the networking world, still out here bouncing packets. periodt. ππβ
π¦ where this page comes from
- alpine 3.24: rdma-core-doc 61.0-r0 Β· GPL-2.0-only OR BSD-2-Clause
- centos-stream 10: libibverbs-utils 62.0-3.el10 Β· GPLv2 or BSD
- centos-stream 9: libibverbs-utils 61.0-3.el9 Β· GPLv2 or BSD
- debian bookworm: ibverbs-utils 44.0-2 Β· BSD-MIT OR GPL-2.0-only
- debian trixie: ibverbs-utils 56.1-1 Β· BSD-MIT OR GPL-2.0-only
- fedora 43: libibverbs-utils 58.0-4.fc43 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: libibverbs-utils 61.0-2.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: libibverbs-utils 61.1^20260812git975bdaf-1.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- nixos 26.05: rdma-core 62.0
- opensuse-leap 16.0: libibverbs-utils 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: libibverbs-utils 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: libibverbs-utils 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: libibverbs-utils 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- ubuntu jammy: ibverbs-utils 39.0-1 Β· BSD-MIT OR GPL-2.0-only
- ubuntu noble: ibverbs-utils 50.0-2build2 Β· BSD-MIT OR GPL-2.0-only
- ubuntu noble: ibverbs-utils 50.0-2ubuntu0.2 Β· BSD-MIT OR GPL-2.0-only
- ubuntu questing: ibverbs-utils 56.1-1ubuntu1
- ubuntu resolute: ibverbs-utils 61.0-2ubuntu3 Β· BSD-MIT OR GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms