1. 概述

mx-diagease(沐曦一键诊断工具)主要提供对单节点曦云®系列设备进行一键诊断的功能,诊断包括PCIe诊断,MetaXLink诊断(如有),内存诊断,电源功耗诊断和GPU压测。

mx-diagease还提供了一种辅助监控模式,工具在该模式下将持续收集多个电源及功耗相关数据,方便用户监测相关指标是否存在异常。

备注

  • 在使用mx-diagease工具之前,需确认已加载曦云系列GPU驱动。驱动安装参见《曦云®系列通用计算GPU驱动安装指南》中“安装驱动”章节。

  • 一键诊断时,请确保诊断程序单独运行在设备上,避免其他进程对诊断结果造成影响。可用 mx-smi –show-all-process 查看是否有用户进程。

  • mx-diagease工具目前不支持对虚拟化后的曦云系列GPU进行检测,也不支持sGPU切分后进行检测。

  • 本文档中,输出结果均以曦云C500为示例。

2. 安装及使用方法

2.1. 安装与卸载

2.1.1. 安装

从MXMACA 2.27.0版本起,MXMACA SDK包安装过程中会默认安装mx-diagease工具。安装完成后,mx-diagease放置在 /opt/maca/bin/ 目录下,并会在 /usr/bin 目录下创建软链接。

2.1.2. 卸载

MXMACA SDK卸载后,mx-diagease工具会自动卸载。MXMACA SDK的卸载参见《曦云®系列通用计算GPU快速上手指南》中“卸载MXMACA编程环境”章节。

2.2. 使用参数说明

无参数时,则立即对所有板卡执行诊断。

2.2.1. mx-diagease参数说明

表 2.1 mx-diagease参数说明

参数

描述

-i <deviceId>,

--index <deviceId>

对指定板卡进行诊断。如果没有指定,默认诊断全部板卡。ID是从0开始的自然数,可以通过 mx-diagease -L 获取板卡的ID信息。可指定一个或多个ID,多个ID用 , 分隔,如 0,1,50-20-4,6all 等。

--set-loglevel <[0, 4]>

设置mx-diagease日志级别。0:关闭日志打印;1:error;2:warn;3:info(默认值);4:debug。

-m, --monitor

进入监控模式,可持续监控板卡各指标状态,实时打印异常信息,Ctrl+C退出后汇总监测结果。

-t <time>,

--time <time>

在监控模式下指定监控时长,支持传入格式为 [seconds][hh:mm:ss]

例如:

持续监控100秒: sudo mx-diagease -m -t 100

持续监控1小时22分35秒: sudo mx-diagease -m -t 01:22:35

-g, --generate-template

生成默认的指标配置文件供诊断功能使用。

-c, --configfile

在使用诊断功能时,可指定json格式的指标配置文件来检测设备。

--check

检查PCIe及MetaXLink速率,带宽及smp状态,传入 bdfid 可检查指定设备信息。

-L, --list

列出所有设备。

2.3. 日志文件

mx-diagease运行时的日志文件默认保存在运行目录 mxdiag-log/mxdiag_<date>.log 下。其中 <date> 表示程序启动时的时间。同一日期的日志不清除不覆盖,会追加。

3. 诊断模式

3.1. 诊断项目

表 3.1 mx-diagease诊断项目

诊断项目

内容

内存诊断

诊断设备内存的完整性,稳定性和可靠性。

  • 在错误诊断方面,可发现并定位硬件问题,如坏页,位错误等。

  • 在功能诊断方面,可在高负载下验证设备的稳定性和可靠性。

PCIe诊断

诊断设备PCIe链路的完整性和稳定性。

包含H2D单向带宽诊断(MB/s),D2H单向带宽诊断(MB/s),HD双向带宽诊断(MB/s),设备间P2P诊断(MB/s)。

GPU Stress诊断

GPU压测,诊断GPU稳定性。诊断在高负载下整卡稳定性和AP稳定性。配置文件及结果对应 stress 项。

MetaXLink诊断

诊断设备MetaXLink链路的完整性和稳定性。

包含设备间单双向带宽诊断(MB/s)。

电源管理诊断

诊断设备功耗,温度及动态电源管理相关指标。

PCIe ACS检查

检查物理机PCIe ACS状态,建议为关闭状态。PCIe ACS 会强制让PCIe 流量经过RC,降低PCIe p2p性能。关闭PCIe ACS需要关闭IOMMU。若为开启状态,诊断时会打屏,且提供可参考的关闭方法。

IOMMU 检查

检查IOMMU状态,建议为关闭状态。开启IOMMU可能会影响部分多卡的性能测试。若为开启状态,诊断时会打屏,且提供可参考的关闭方法。

主机CPU工作模式检查

检查主机CPU工作模式,建议设置为 performance 模式, powersave 模式下CPU很难达到较高频率,可能对性能测试产生负面影响。若诊断过程中发现有一个及以上CPU不是 performance 模式,会随机选择其中一个打屏,并且提供可参考的设置方法。

3.2. 诊断配置文件

执行以下命令,在当前目录生成默认配置文件 diagease-config.json,为后续诊断功能使用。

mx-diagease --generate-template
  • PCIe speed 单位为GT/s,PCIe带宽和MetaXLink带宽单位为MB/s。

  • 内存诊断共有11个种类, test_indexes 中可指定诊断类别,默认11种都诊断。

    • 0:[Address test, walking 1 bit]

    • 1:[Address test, own address]

    • 2:[Moving inversions, ones&zeros]

    • 3:[Moving inversions, 8 bit pattern]

    • 4:[Moving inversions, random pattern]

    • 5:[Block move, 64 moves]

    • 6:[Moving inversions, 32 bit pattern]

    • 7:[Random number sequence]

    • 8:[Modulo 20, random pattern]

    • 9:[Bit fade test, 2 patterns]

    • 10:[Memory stress]

    诊断类别的详细介绍可参见 开发者社区

  • GPU Stress诊断的一个 iteration 大概有3-5秒。如要进行12小时的压力测试,可将 iteration 的值设置为大于15000。

生成的文件如下:

{
   "pcie": {
      "speed": 32,
      "width": 16,
      "bw_h2d": 47000,
      "bw_d2h": 52000,
      "bw_h2d_d2h": 77000,
      "bw_uni_p2p": 36000,
      "bw_bi_p2p": 73000
   },
   "metaxlink": {
      "bw_uni_p2p": 4900,
      "bw_bi_p2p": 90000
   },
   "memorytest": {
      "test_indexes": [0,1,2,3,4,5,6,7,8,9,10]
   },
   "stress": {
      "iteration":100
   }
}

3.3. 诊断命令

mx-diagease [--configfile]

执行命令需要sudo权限。

执行以上命令,输出所有沐曦设备Memory,PCIe,GPU Stress,MetaXLink,Power诊断信息。

可在mx-diagease运行目录下 mxdiag-log 文件夹中查看日志。

目前使用默认配置文件进行诊断,时间在25-40分钟左右。如用户使用自定义配置文件(基于以上 diagease-config.json 文件修改诊断项目,诊断时间和诊断目标等),可用 --configfile 传入。不传则系统按照程序默认配置(其中带宽相关诊断项无目标值,仅确保连通性)进行检测。

输出结果

监测结果若有一项显示FAIL,则最终结果为FAIL。显示如下所示:

MetaX Diagnostic tool Version: X.X.XX
Product : C500
Kmd version : X.X.X
Bios version : X.XX.X.X
Maca version : X.XX.X.X

+----------------+----------------+----------+
| Device Id      | Test           | Result   |
+----------------+----------------+----------+
| x              | memory         | PASS     |
|                | pcie           | FAIL     |
|                | stress         | PASS     |
|                | Metaxlink      | PASS     |
|                | power          | PASS     |
+----------------+----------------+----------+
##############################
#                            #
#     Final Result: FAIL     #
#                            #
##############################

4. 监控模式

4.1. 监控项目

表 4.1 mx-diagease监控项目

监测类别

异常

异常日志信息

功耗监测

出现超功耗

Device (xxx) power exceeds limit.

获取设备功耗失败

Device (xxx) get power failed.

过温监测

出现过温

Device (xxx) vr temperature exceeds limit.

Device (xxx) chip temperature exceeds limit.

Device (xxx) board temperature exceeds limit.

CTF

Device (xxx) chip temperature fault.

Device (xxx) board temperature fault.

获取设备温度失败

Device (xxx) get temperature failed.

PCC监测

出现PCC

Device (xxx) warning Pcc

Device (xxx) critical Pcc

warning: 单位时间pcc counter占比不超过3%。

critical: 单位时间pcc counter占比超过3%。

操作counter失败

Device (xxx) set counter failed: Pcc

Device (xxx) get counter failed: Pcc

Counter计数异常清除

Device (xxx) cleared counter unexpectedly: Pcc

Power brake监测

出现Power brake

Device (xxx) warning Pwrbrk

Device (xxx) critical Pwrbrk

warning: 单位时间pwrbrk counter占比不超过3%。

critical: 单位时间pwrbrk counter占比超过3%。

操作counter失败

Device (xxx) set counter failed: Pwrbrk

Device (xxx) get counter failed: Pwrbrk

Counter计数异常清除

Device (xxx) cleared counter unexpectedly: Pwrbrk

DI/DT监测

出现DI/DT

Device (xxx) warning Didt

Device (xxx) critical Didt

warning: 单位时间counter占比不超过3%。

critical: 单位时间didt counter占比超过3%。

操作counter失败

Device (xxx) set counter failed: Didt

Device (xxx) get counter failed: Didt

Counter计数异常清除

Device (xxx) cleared counter unexpectedly: Didt

Power state(deepsleep)监测

Power state异常

Device (xxx) critical power state error.

获取设备时钟失败

Device (xxx) get clocks failed.

4.2. 监控命令

mx-diagease -m -t <time>

执行命令需要sudo权限。

-t 指定监控时长,支持传入格式为 [seconds][hh:mm:ss],若未传入该参数默认持续进行,需 Ctrl+C 退出mx-diagease,显示汇总信息。

执行以上命令,持续监控板卡功耗模块,count数据等,如有异常,将实时打印异常指标信息。可在mx-diagease运行目录下 mxdiag-log 文件夹中查看日志。

输出结果

  • 退出后若监测结果为健康,显示如下所示:

    MetaX Diagnostic tool Version: X.X.XX
    Product : C500
    Kmd version : X.X.X
    Bios version : X.XX.X.X
    Maca version : X.XX.X.X
    ^C
    ------------------ Result -----------------
    Device xxx
    Device xxx is healthy
    
  • 如有异常会实时打印,退出后显示汇总信息,如下所示:

    MetaX Diagnostic tool Version: X.X.XX
    Product : C500
    Kmd version : X.X.X
    Bios version : X.XX.X.X
    Maca version : X.XX.X.X
    
    ------------------ Result -----------------
    Device 0
    Device 0 is healthy
    Device 1
    WARNING, power exceeds limit
    CAUTION, warning Didt
    CAUTION, get temperature info failed
    Device 2
    CRITICAL, critical power state error
    

5. 无驱动检查

5.1. 无驱动检查设备信息

MXMACA 2.31.0及之后版本,在未加载驱动时,可以通过以下命令查看smp状态、PCIe/MetaXLink信息、固件版本及固件名称。

操作步骤

  1. 查看设备的 BDF ID

    mx-diagease -L
    
  2. 通过指定 BDF ID ,检查对应设备信息。

    mx-diagease --check <bdfid>
    

输出结果

结果显示如下所示:

Smp0 Init.All.Finish
PCIe link speed: Gen5
PCIe link width: x16
MetaX link4 speed: Gen5
MetaX link4 width: x16
MetaX link5 speed: Gen5
MetaX link5 width: x16
MetaX link6 speed: Gen5
MetaX link6 width: x16
Vbios Version: 1.23.0.0-7066
Vbios Binary Name: C500

6. 附录

6.1. 术语/缩略语

术语/缩略语

全称

描述

ACS

Access Control Service

访问控制服务

AP

Accelerated Processor

加速处理器

CTF

Critical Temperature Fault

临界温度故障

D2H

Device-to-Host

DI/DT

电流变化率

H2D

Host-to-Device

MXMACA

MetaX Advanced Compute Architecture

沐曦推出的GPU软件栈,包含了沐曦GPU的底层驱动、编译器、数学库及整套软件工具套件

P2P

Peer-to-Peer

PCIe P2P是PCIe的一种特性,使两个PCIe设备之间可以直接传输数据

PCC

Peak Current Control

峰值电流控制

PCIe

Peripheral Component Interconnect Express

一种高速串行计算机扩展总线标准

IOMMU

Input/Output Memory Management Unit

输入/输出内存管理单元