1 个不稳定版本
0.3.0 | 2022年6月1日 |
---|---|
0.2.0 |
|
0.1.3 |
|
#370 in #low-level
225KB
6K SLoC
rdma
低级RDMA API。
环境
此crate需要安装最新版本的rdma-core。
请确保以下命令可以正常工作
$ pkg-config --modversion libibverbs
1.14.41.0
$ pkg-config --modversion librdmacm
1.3.41.0
输出还会显示所需的最小版本。
开发
示例
添加Soft-RoCE设备
sudo rdma link add rxe0 type rxe netdev ens33
rxe0
是RDMA设备名称。您可以将其命名为您想要的任何名称。 ens33
是网络设备的名称。网络设备的名称可能不同。您可以通过运行命令ifconfig
来查看。
为中文用户提供了一个教程:https://zhuanlan.zhihu.com/p/361740115。
如果您没有安装,请安装工具just。
安装示例
just install-examples
运行示例rdma-devices
$ rdma-devices
| name | guid |
| ---- | ---------------- |
| rxe0 | 26418cfffe021df9 |
运行示例rdma-pingpong
-
RC服务
- 服务器端
rdma-pingpong rc
- 客户端
rdma-pingpong rc 127.0.0.1
- 服务器端
-
UD服务
- 服务器端
rdma-pingpong ud
- 客户端
rdma-pingpong ud 127.0.0.1
- 服务器端
运行基准测试
just bench-pingpong-rc
just bench-pingpong-ud
运行示例rdma-async
rdma-async-rpc
内存管理
所有与原始内存相关的API都是不安全的。
我们正在探索如何在RDMA中提供一种安全且易于管理的内存方式。
示例rdma-async可能会给您一些启发。
资源管理
RDMA资源由引用计数管理。
下面的图表显示了资源之间的关系。
依赖关系
~0.6–8MB
~55K SLoC