第二章:测试环境搭建:硬件选型与拓扑规划、操作系统与驱动安装、OpenSM子网管理器配置
大家好,我是你们的老朋友。上一章我们聊了IB网络性能测试到底测什么、为什么测。这一章,咱们得把家伙事儿都支棱起来。说白了,就是搭台子。台子搭不好,后面测出来的数据全是废的。我见过太多团队,硬件选型拍脑袋,驱动装得稀里糊涂,最后定位问题定位到想哭。嗯,咱们今天就把这些坑一个个填平。
2.1 硬件选型:别让短板拖死你
硬件选型这事儿,我个人习惯是先定带宽,再定网卡,最后看线缆。为什么?你想想看,你的业务需要100G还是200G甚至400G?这决定了你整个集群的“天花板”。
核心原则:端到端带宽匹配。网卡、交换机端口、线缆,这三者任何一个掉链子,你的实际带宽就是那个最慢的环节。
我在项目中遇到过最典型的案例:客户买了HDR100的网卡(100Gbps),结果配了EDR的线缆(约50Gbps)。测试结果死活上不去,查了三天,最后发现是线缆的锅。你说冤不冤?
具体选型建议如下:
| 组件 | 推荐型号/规格 | 避坑指南 |
|---|---|---|
| HCA(网卡) | Mellanox ConnectX-5/6/7 系列 | 注意PCIe版本,Gen3 x16才能喂饱100G |
| 交换机 | Mellanox SB7800 / QM9700 系列 | 确认端口速率与HCA匹配,别混用EDR/HDR |
| 线缆 | 无源铜缆(短距) / 有源光缆(长距) | 长度超过3米建议用光缆,信号衰减小 |
| 服务器 | GPU服务器(如NVIDIA DGX)或通用x86 | 确保PCIe插槽直连CPU,别走PCH |
警告:千万别买二手或者来历不明的IB线缆。我曾经贪便宜买了一批“库存”光缆,结果插上后光模块死活不亮,最后发现是接口氧化了。省那点钱,不够你折腾时间的。
2.2 拓扑规划:胖树还是瘦树?
拓扑规划,说白了就是决定你的数据怎么走。最常见的两种:
- 胖树(Fat-Tree):无阻塞架构,任何两个节点之间带宽都是满的。适合大规模HPC集群。
- 瘦树(Thin-Tree):有收敛比,上层带宽小于下层。省钱,但性能有瓶颈。
我个人建议,做性能基准测试,必须用胖树。为什么?因为你要测的是网卡和交换机的极限,不是测拓扑的瓶颈。你想想看,如果拓扑本身就有收敛,你测出来的数据到底是网卡不行,还是交换机上行口不够?说不清楚。
下面我画了一张典型的双轨胖树拓扑图,你看一眼就明白了:
小技巧:如果你只有4台机器做测试,其实不需要买交换机。直接用IB线缆把两台机器的HCA直连就行。这叫“点对点测试”,排除了交换机的影响,专门测网卡极限。
2.3 操作系统与驱动安装:别在第一步翻车
操作系统选型,我个人推荐CentOS 7.9或者Rocky Linux 8.x。为什么?因为Mellanox的驱动对RHEL系支持最好。Ubuntu也能用,但有时候会遇到一些奇奇怪怪的依赖问题。
驱动安装,我建议用官方提供的 mlnxofedinstall 脚本。别自己手动编译,除非你真的知道自己在干什么。
具体步骤:
- 下载驱动:从Mellanox官网下载对应OS版本的MLNX_OFED包。
- 安装依赖:
yum install -y gcc kernel-devel kernel-headers - 运行安装脚本:
./mlnxofedinstall --all - 重启:
reboot
注意:安装过程中如果提示“kernel-devel版本不匹配”,千万别跳过。我曾经有一次偷懒,用了--force参数强行安装,结果驱动加载后网卡直接不识别。最后只能重装系统,血的教训。
安装完成后,用 ibstat 命令检查网卡状态:
# ibstat
CA 'mlx5_0'
State: Active
Physical state: LinkUp
Rate: 100
看到 State: Active 和 LinkUp,说明驱动装好了,物理链路也通了。如果显示 Down,先检查线缆,再检查交换机端口配置。
2.4 OpenSM子网管理器配置:IB网络的“大脑”
IB网络和以太网最大的区别是什么?以太网是“无连接”的,数据包自己找路。IB网络是“面向连接”的,需要有一个子网管理器(SM)来规划路径。说白了,OpenSM就是IB网络的交通警察。
OpenSM通常运行在交换机上,或者一台管理节点上。我个人习惯把它跑在管理节点上,因为交换机上的资源有限,万一OpenSM挂了,交换机还能干点别的。
安装配置步骤:
- 安装OpenSM:
yum install -y opensm - 启动服务:
systemctl start opensm - 设置开机自启:
systemctl enable opensm
检查OpenSM是否正常运行:
# sminfo
SM: lid=1, name=opensm
SM: active
看到 active 就对了。如果显示 standby,说明有多个SM在运行,需要确认主备关系。
重要:OpenSM启动后,它会自动发现所有IB设备,并计算最优路径。这个过程叫“LFT(线性转发表)计算”。如果你的网络拓扑有变化(比如新增了一台机器),需要重启OpenSM或者手动触发重计算:opensm -R。
我曾经遇到过一个场景:集群扩容后,新加的几台机器死活ping不通。查了半天,发现是OpenSM没有重新计算路由。重启OpenSM后,一切正常。嗯,这种低级错误,犯过一次就记住了。
高级技巧:对于大规模集群(超过1000节点),建议开启OpenSM的“fat-tree routing”算法。在配置文件 /etc/opensm/opensm.conf 中设置:routing_engine=ftree。这样能最大化利用胖树拓扑的带宽。
好了,环境搭建这块就聊到这儿。硬件选型别贪便宜,拓扑规划别偷懒,驱动安装别跳过依赖检查,OpenSM配置别忘了重启。这几步走稳了,后面测试才能出真数据。
公众号:蓝海资料掘金营,微信deep3321