多机峰值带宽低
问题现象
使用HCCL Test工具测试多机带宽时,多机带宽峰值低于预期值。
原因分析
- 使用HCCL Test性能测试工具时,未设置HCCL_BUFFSIZE环境变量,或者测试命令中设置的测试数据量较小。
- 开启了Profiling功能或日志等级未设置为默认的ERROR级别,会导致带宽较低。
- 某台机器带宽较低,导致多机带宽低。
- 交换机负载分担方式配置不合理,产生拥塞。
- spine和leaf交换机之间的某个端口状态异常。
解决步骤
- 确认HCCL_BUFFSIZE环境变量是否设置。
环境变量HCCL_BUFFSIZE用于调整两个NPU之间共享数据的缓存区大小,两个NPU之间共享数据的缓存区大小默认为200M,使用HCCL Test工具进行性能测试的场景下,往往通信数据量较大,此种场景下,可适当增大HCCL_BUFFSIZE的值,提升数据通信效率与带宽。
配置示例:
export HCCL_BUFFSIZE=2048
- 确认hccl_test测试命令中的参数“-e”是否配置过小。
“-e”代表测试数据大小的结束值,若“-e”较小,则带宽会较小,建议增大-e参数的值,例如:
mpirun -n 8 ./bin/all_reduce_test -b 8K -e 4G -f 2 -d fp32 -o sum -p 8
- 查看是否开启了Profiling性能数据采集功能。
- 查看日志级别是否为“ERROR”。查看Host与Device的日志级别:
- 多机带宽较低还可能是某台机器带宽较低或网络配置不一致导致的。
此种场景下,可以通过二分法找到这台机器,然后参见单机带宽低进行可能原因的排查,若单机测试均无问题可尝试通过“cat /etc/hccn.conf”命令检查所有服务器配置是否一样,某台机器网络配置不一致,有可能会造成单机测试无问题(单机不使用外部网络),但多机带宽低的情况。
- 检查交换机负载分担方式是否配置合理。
执行如下命令,查看服务器统计信息:
for i in $(seq 0 15); do echo "==============> $i"; hccn_tool -i $i -stat -g |grep pfc ;done
统计信息中有很多“rx pfc”,标识交换机负载分担不均衡,产生了拥塞。
可通过如下方法尝试解决:
- 首先解决交换机的pfc问题,要做到pfc很少甚至没有pfc。
- 查看交换机流量是否不均衡,有没有出现多打一(多条流量走一个端口出),有些端口流量大有些端口流量小,产生拥塞的情况。
- 假如是通过udp端口进行哈希选路,查看是否某些机器的udp port没配置。
父主题: HCCL Test常见问题总结