rdmatop
htop, but for RDMA traffic — a real-time TUI monitor for RDMA network interfaces.
Monitors per-device throughput (Gbps, packets/s, drops), RDMA read/write counters, retransmits, health events, and shows which processes are using each RDMA device — all via RDMA netlink, the same interface used by rdma statistic.
Blogs
- rdmatop: Cross-Provider htop for RDMA Traffic (2026-06-15)
- NVSHMEM Multi-NIC Support with AWS EFA (2026-03-27)
Requirements
- Linux (netlink-based — macOS/Windows are not supported)
- RDMA-capable NICs (e.g., Mellanox/NVIDIA ConnectX, AWS EFA)
Installation
Ubuntu (PPA)
On Ubuntu 22.04 (jammy), 24.04 (noble), or 26.04 (resolute) — amd64 and arm64:
sudo add-apt-repository ppa:crazyguitar/rdmatop
sudo apt update
sudo apt install rdmatop
Cargo
cargo install rdmatop
From source
make # cargo build
make install # cargo install
Usage
rdmatop
Perfetto recording
Press r in the TUI to start recording and r again to stop. rdmatop captures
every device's tx/rx Gbps and packets/s per interval and writes a Chrome-JSON
trace (rdmatop-<unix_timestamp>.json, in the current directory) you can drag into ui.perfetto.dev
— each device/port becomes its own set of counter tracks. Timestamps are relative
to when you pressed r, so the trace spans exactly your record window.
PyTorch profiler
rdmatop can run inside the training process as a Kineto child profiler, so
RDMA counter tracks land in the same trace torch.profiler writes:
import torch
from torch.profiler import ProfilerActivity, profile
import rdmatop.kineto
rdmatop.kineto.enable()
with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA]) as prof:
train_step()
prof.export_chrome_trace("trace.json")
The shim links against the installed torch (>= 2.9), so it is built from a
checkout with cargo and a C++ compiler on PATH. PyTorch selects the required
C++ standard (C++17 or C++20, depending on its version). Rebuild the shim after
changing PyTorch versions:
pip install "setuptools>=64" "torch>=2.9"
pip install --no-build-isolation -e ./python
On older Kineto versions without native counters, enable() wraps
torch.profiler.profile.export_chrome_trace() to convert rdmatop's marked
events into counter tracks. This also supports gzip exports and
tensorboard_trace_handler; raw Kineto exports retain zero-duration events.
Newer versions emit native counters and need no export wrapper.
Examples
Use rdmatop to monitor RDMA traffic while running GPU
communication benchmarks:
- PyTorch — intranode NVLink/XGMI traffic
- IB Perftest — two-node
ib_write_bwbenchmark - UCX Perftest — two-node
ucx_perftestbandwidth / latency - NCCL — collective communication
- NIXL — point-to-point KV cache transfer
- NVSHMEM — one-sided GPU communication
- PPLX Kernels — MoE all-to-all dispatch/combine
- UCCL — DeepEP-compatible expert-parallel dispatch/combine
- RDMA Statistics — shell-based RDMA stats
- Kubernetes — DaemonSet deployment for Kubernetes
How It Works
- Device enumeration —
RDMA_NLDEV_CMD_GETvia netlink to discover all RDMA devices - HW counters —
RDMA_NLDEV_CMD_STAT_GETper device/port, same asrdma statistic show - Process detection —
RDMA_NLDEV_CMD_RES_QP_GETto map QPs → PIDs, enriched with/procdata - Throughput — Two snapshots per interval, delta / elapsed for rates
Contributing
See CONTRIBUTING.md for build/test instructions, design ground rules, and how to submit changes.
License
Apache-2.0
Metadata
Release files for rdmatop 0.1.29
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rdmatop-0.1.29.tar.gz | 90.3 kB | Details |
Release files / rdmatop-0.1.29.tar.gz
| Download URL | rdmatop-0.1.29.tar.gz |
|---|---|
| Size | 90.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
79501486265700c21244261d8238fc0149a5f01e747f5dd2ccf9dbfe80fda8f4
|
|
BLAKE2b-256 checksum How to use checksums |
04113d003930b143ef1e00edfe3280d4b0e1ebd9bfa8e336da59b074e28aadff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency log