EJ0003打屏报错
问题现象
建链阶段报EJ0003的错误,HCCP调系统函数bind失败,常见报错error: 98或error: 99。
该报错对应Linux标准报错定义如下:
# define EADDRINUSE 98 /* Address already in use */ # define EADDRNOTAVAIL 99 /* Cannot assign requested address */
查看plog日志中关于HCCP的报错:
grep -rn ERROR * | grep HCCP | head
报错1:
plog/plog-3541138_20231113190511833.log:30551:[ERROR] HCCP(3541138,host_cpu_executor):2023-11-13-19:05:49.833.681 [rs_socket.c:671]tid:3541138,rs_socket_listen_bind_listen(671) : bind fail! family:2, IP:127.0.0.1, port:50000, sock:27, ret:0xffffffff, error:98, Possible Cause: the IP address and port have been bound already plog/plog-3541138_20231113190511833.log:30552:[ERROR] HCCP(3541138,host_cpu_executor):2023-11-13-19:05:49.833.687 [rs_socket.c:860]tid:3541138,rs_socket_listen_start(860) : bind and listen fail, err_no:98, listen_fd:27, listen state:1, IP(127.0.0.1) server_port:50000 plog/plog-3541138_20231113190511833.log:30554:[ERROR] HCCP(3541138,host_cpu_executor):2023-11-13-19:05:49.833.704 [ra_peer.c:114]tid:3541138,ra_peer_socket_listen_start(114) : [listen_start][ra_peer_socket]ra listen start failed ret(-98).
报错2:
[ERROR] HCCP(160639,all_gather_test):2023-10-17-07:28:13.178.137 [rs_socket.c:671]tid:160639,rs_socket_listen_bind_listen(671) : bind fail! ::350d:755b:add4:ada6, port:60000, sock:25, ret:0xffffffff, error:99, Possible Cause: the IP address and port have been bound already
报错3:
75346:[ERROR] HCCP(13854,python3):2023-09-04-14:37:34.444.964 [rs_socket.c:1124]tid:21717,rs_connect_bind_client(1124) : client bind fail! IP:fe80::4b79:e6c9:31eb:f019, sock:530, ret:-1, error:99 75347:[ERROR] HCCP(13854,python3):2023-09-04-14:37:34.444.968 [rs_socket.c:1164]tid:21717,rs_socket_state_reset(1164) : rs_connect_bind_client failed, ret[-99]
解决方法
- 检查配置。
- 查看Device网卡的IP地址是否存在。
执行hccn_tool -i dev_id -ip -g命令查询对应的Device网卡的IP地址是否存在。
若不存在,请执行如下命令进行配置。
hccn_tool -i dev_id -ip -s address 192.168.0.3 netmask 255.255.255.0
- 检查ranktable表中配置的IP地址与网卡实际IP是否一致,若不一致,请修改。
- 检查应用程序端口与HCCL系统进程端口是否冲突。
分布式训练场景下,HCCL默认会使用Host服务器的60000-60015端口收集集群信息,若通过环境变量HCCL_IF_BASE_PORT指定了Host网卡起始端口,则需要预留以该端口起始的16个端口。
可通过lsof -i:60000确认占用端口的进程信息,通过netstat -ant | grep WAIT命令查看端口状态。
若确认是应用程序端口与HCCL系统进程端口冲突,可通过如下命令预留系统端口。
sysctl -w net.ipv4.ip_local_reserved_ports=60000-60015
- 检查是否存在IP与端口重复监听的问题。
- 查看Device网卡的IP地址是否存在。
- 若绑定网卡报错,可通过环境变量HCCL_SOCKET_IFNAME指定初始化Host通信网卡,HCCL可通过该网卡名获取Host IP,完成通信域创建。配置示例如下:
export HCCL_SOCKET_IFNAME==eth0
- 执行hccn_tool -i dev_id -link -g命令查看对应的Device网卡状态,若网卡状态异常,请排查网卡错误。
父主题: HCCP常见问题总结