RSTREAM(1)

✨ RSTREAM πŸ’…

okay bestie, listen UP, this is rstream from the librdmacm manual, section 1, and it is literally the streaming over RDMA ping-pong test and I'm obsessed πŸ’–


🌸 NAME 🌸

rstream β€” streaming over RDMA ping-pong test, no cap πŸ“


πŸ¦‹ SYNOPSIS πŸ¦‹

rstream [-s server_address] [-b bind_address] [-f address_format]
               [-B buffer_size] [-I iterations] [-C transfer_count]
               [-S transfer_size] [-p server_port] [-T test_option]

πŸ‘‘ DESCRIPTION πŸ‘‘

So basically? It uses the streaming over RDMA protocol (rsocket) to connect and exchange data between a client and a server application. Two little apps, vibing, talking over RDMA. That's it, that's the whole thing. Periodt. ✨


πŸ’œ OPTIONS πŸ’œ

  • -s server_address β€” the network name or IP address of the server system that's listening for connections. The name or address you use must route over an RDMA device, okay? And this one is on the client β€” the client HAS to specify it. Non-negotiable fr fr.
  • -b bind_address β€” the local network address to bind to. Yours, your little home address 🏑
  • -f address_format β€” the address formats we support are ip, ipv6, gid, or name. Pick your fighter πŸŽ€
  • -B buffer_size β€” tells you the size of the send and receive network buffers. That's the size of the vibe containers πŸ“¦
  • -I iterations β€” how many times the specified number of messages gets exchanged between the client and the server. (default 1000)
  • -C transfer_count β€” how many messages get transferred from the client to the server and back again on each iteration. (default 1000)
  • -S transfer_size β€” the size of each send transfer, in bytes. (default 1000) And if you pass 'all', rstream will run a series of tests of various sizes. ✨ variety is the spice of life ✨
  • -p server_port β€” the server's port number. the door number, iykyk πŸšͺ
  • -T test_option β€” specifies test parameters. Available options are:
    • s | socket β€” uses standard socket calls to transfer data
    • a | async β€” uses asynchronous operation (e.g. select / poll)
    • b | blocking β€” uses blocking calls
    • f | fork β€” fork server processing (forces -T s option)
    • n | nonblocking β€” uses non-blocking calls
    • r | resolve β€” use rdma cm to resolve address
    • v | verify β€” verifies data transfers

πŸŽ€ NOTES πŸŽ€

Basic usage, the tutorial level, the main character energy move: start rstream on a server system, then run rstream -s server_name on a client system. That's it. By default, rstream will run a series of latency and bandwidth performance tests. But if you specify a different iterations, transfer_count, or transfer_size, it'll run a user customized test using default values wherever you didn't specify anything. Cute, right? 🫢

okay so important one, bestie β€” because this test maps RDMA resources to userspace, users must make sure they have available system resources and permissions. Please check that. See the libibverbs README file for additional details. Not me being responsible for once 😭

🌈 SEE ALSO 🌈

rdma_cm(7)


and that's the whole page, angel πŸ’– this was librdmacm, version dated 2011-11-16, and honestly? iconic behavior. go slay your ping-pong test πŸ“βœ¨

πŸ“¦ where this page comes from