# 慢节点/慢网络处理
#### 问题描述
- 业务现象
  - 单个分布式训练作业不同epoch/step性能波动大。
  
  - 多个相同业务的分布式训练作业，某（几）个训练作业比其他训练作业慢。
   
- 日志现象
  - 查看训练日志打印，某次作业整体变慢。
  
  - 查看训练日志打印，作业的某些epoch/step耗时明显增加。
   
 
#### 对系统的影响
出现性能波动，可能导致训练耗时增加。
#### 可能原因
- 慢节点：
  - NPU固件驱动版本不配套导致执行慢。
  
  - 日志级别过低导致执行慢。
  
  - 硬件异常（NPU过温、网络链路问题等）导致执行慢。
   
- 慢网络：
  - 多个业务交换机流量抢占。
  
  - 交换机网络流量拥塞导致集合通信慢。
   
 
#### 处理步骤
问题定位和故障处理流程如[图1]所示。
图1慢节点、慢网络处理流程   
![](https://support.huaweicloud.com/resmgmt-modelarts/figure/zh-cn_image_0000002662486247.png "点击放大")
1. Profiling数据分析定界是计算还是网络慢。 
   开启Profiling信息收集，复现问题获取profiling数据。查看性能变慢的step和性能正常的step。
   - 某个节点执行慢，则执行[2]进行慢节点排查。
   
   - 通信算子执行慢，则先执行[2]进行慢节点排查，再执行[3]进行慢网络排查。
   
   
   
   
2. 慢节点排查。
   
   1. BMC日志排查硬件故障。 查看"dump_info/AppDump/sensor_alarm/sel.tar"文件解压后业务运行时间段是否有硬件过温、NPU故障告警。
      查看"dump_info/AppDump/sensor_alarm/sensor.info"传感器文件和"dump_info/OptPme/pram/NPUxxx.dat" NPU温度文件，查看是否有NPU/CPU的温度值异常高。
      查看"dump_info/LogDump/fdm_log"在业务运行时间段有大量HPCS链路报错。
      - 是，则确定硬件故障导致慢节点。
      
      - 否，则执行[2.b]。
       
   
   2. 排查节点软件配置。
      使用以下命令检查NPU固件驱动是否配套。
      ```
      npu-smi info -t board
      ```
      使用以下命令检查NPU device日志级别是否所有卡一致，是否和其他节点一致。
      ```
      msnpureport -r
      ```
      - 是，则确定NPU版本或配置导致慢节点。
      
      - 否，请联系华为工程师进一步排查。
       
   
   
   
   
3. 慢网络排查。
   
   1. 服务器侧排查。
      - 训练任务运行时采集NPU网卡stat收发包统计信息，查看正常作业和慢作业的mac_rx_pfc_pkt_num增长趋势，是否是慢作业增加的更明显。
      
      - 如果有配置源端口Hash路由，执行以下命令查询源端口配置是否正确。
        ```
        hccn_tool -i <device_id> -udp -g
        ```
        
       
   
   2. 交换机网络排查。
      - 检查交换机PFC配置是否正确，PFC缓冲区是否设置足够大。
      
      - 联系交换机运维排查训练变慢时，交换机网络是否存在硬件异常。
      
      - 联系交换机运维排查训练变慢时，交换机网络是否发生了多打一或者拥塞的情况。
       
   
   3. 工具流量压测/业务流量压测分析流量统计。
      - 重新启动训练任务。
      
      - 联系网络运维，排查训练任务对应的路由网络是否出现路由和带宽抢占。
      
      - 查看接入交换机和汇聚交换机流量，是否发生拥塞。
       
   
   
   
   
 
