慢卡与通信分析

  1. 在cluster_analysis_output目录下,查看“cluster_step_trace_time.csv”文件,进行集群多卡的性能诊断。

    图1 “cluster_step_trace_time.csv”文件数据
    排查方法:先筛选B列type为stage, 看stage间是否有问题,再筛选B列type为rank,看rank是否有问题,根据以下几点排查。
    • 根据Computing的时间差异判断是否有慢卡,或者有负载不均衡的现象。
    • 根据Free统计是否有host bound或者分布不均现象。
    • 根据Communication(Not Overlapped and Exclude Receive)时间判断是否通信耗时占比过大。
    • 根据Bubble时间的占比和理论计算公式判断bubble设置是否合理,是否stage间有不均衡现象。
    字段说明:
    • A列:Step数,是采集性能数据时设置的,一般来说集群性能数据采集一个step足够,如果采集多个step,需要先筛选一下。
    • B列:Type,主要分两种,rank和stage,和后面的index强相关,可以理解为一个是单卡rank,一个是rank group(pp 并行的stage),如果type为stage,则后面D-K列信息为rank group下的最大值。
    • C列:Index,与type相关,表示卡号。
    • D列:Computing, 此列统计计算时间。
    • E列:Communication(Not Overlapped),此列统计未被掩盖的通信耗时。
    • F列:Overlapped,统计计算与通信重叠的耗时。
    • G列:Communication,通信时间的全部耗时。
    • H列:Free,空闲时间,只device侧既不在通信也不在计算的耗时,可能在做sdma拷贝或者空等。
    • I列:Stage时间,I、J、K列属于pp并行时有效的数值,stage时间代表除recieve算子时间外的时间。
    • J列:Bubble时间,指receive时间的总和。
    • K列:Communication(Not Overlapped and Exclude Receive)指剔除recieve算子外的并且不被掩盖的通信时间。

  2. 在cluster_analysis_output目录下,直接用vscode或json查看器打开“cluster_communication_matrix.json”文件,搜索“Total”,会有多个搜索结果,可以根据rank互联的带宽以及链路类型,判断是否有慢链路的问题:

    • “LOCAL”是片内拷贝,速率非常快,不需要考虑。
    • “HCCS”或“PCIE”是节点内片间拷贝,可以观察不同链路间带宽是否均衡。
    • “RDMA”是节点间拷贝,可以观察不同链路间带宽是否均衡。