RDMA Core 用户空间库和守护进程使用指南
1. 项目介绍
RDMA Core 是 Linux 内核的用户空间组件,用于 Linux 内核的 drivers/infiniband
子系统。它包含了以下设备节点的用户空间库:
/dev/infiniband/uverbsX
(libibverbs)/dev/infiniband/rdma_cm
(librdmacm)/dev/infiniband/umadX
(libibumad)
项目支持多种内核 RDMA 驱动,包括但不限于 bnxt_re, efa, erdma, iw_cxgb4 等。此外,还提供了额外的服务守护进程,例如 srp_daemon、iwpmd 和 ibacm。
2. 项目快速启动
安装依赖
根据您的操作系统,您需要安装以下依赖:
- Debian/Ubuntu:
apt-get install build-essential cmake gcc libudev-dev libnl-3-dev libnl-route-3-dev ninja-build pkg-config valgrind python3-dev cython3 python3-docutils pandoc
- Fedora/CentOS 8:
dnf builddep redhat/rdma-core.spec
- openSUSE:
zypper install cmake gcc libnl3-devel libudev-devel ninja pkg-config valgrind-devel python3-devel python3-Cython python3-docutils pandoc
- CentOS 7/Amazon Linux 2:
# CentOS 7
yum install cmake gcc libnl3-devel libudev-devel make pkgconfig valgrind-devel
# 安装现代工具
yum install epel-release
yum install cmake3 ninja-build pandoc
# Amazon Linux 2
amazon-linux-extras install epel
yum install cmake3 ninja-build pandoc
构建项目
使用以下命令构建项目:
bash build.sh
构建完成后,build/bin
目录将包含示例程序,build/lib
目录将包含共享库。
3. 应用案例和最佳实践
设置软件 RDMA
要在一个现有的接口上设置软件 RDMA,使用以下命令,将 <DRIVER>
替换为您选择的驱动名称(如 rdma_rxe
或 siw
),将 <TYPE>
替换为与驱动对应的类型(如 rxe
或 siw
)。
modprobe <DRIVER>
rdma link add <NAME> type <TYPE> netdev <DEVICE>
请确保您使用的 iproute2
版本足够新,以便上述命令能够工作。
验证设备
您可以使用 ibv_devices
或 rdma link
命令来验证设备是否成功添加。
4. 典型生态项目
RDMA Core 的生态项目包括但不限于以下这些:
rdma-core
: 核心用户空间库和守护进程。rdmaExamples
: 用于演示如何使用 RDMA Core 的示例应用程序。ibverbs
: 提供了对 InfiniBand 和 RDMA 设备的高级访问的库。
每个项目都有其特定的用途和优势,可以根据您的需求选择适合的项目进行集成和使用。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考