NVIDIA 现场诊断软件
1.0 简介
本文档介绍了 NVIDIA 现场诊断软件。这是一个强大的软件程序,允许用户测试以下 NVIDIA Tesla 硬件
- Tesla C2050, C2070, C2075
- Tesla M2050, M2070, M2070Q, M2075
- Tesla S2050
- Tesla X2070, X2090
- Tesla M2090
- Tesla K10, K20, K20X, K40
NVIDIA 现场诊断软件可在 DOS 和大多数基于 2.6 内核的 Linux 变体上运行。
2.0 用法
2.1 系统要求
Linux
- Intel Pentium III 或更高版本 CPU
- 2GB 或更多系统内存。
- Linux 内核 2.6.16 或更高版本
出于性能原因,建议使用内核 2.6.29 或更高版本。该工具已在内核 2.6.16 至 2.6.35 上进行过测试。
不支持 Linux 2.4。
- glibc 2.3.2 或更高版本
- 支持 64 位 x86_64 内核。不支持 32 位内核。
- 支持 TinyLinux 版本 12.08 或更高版本。
2.2 测试进度
当诊断程序运行时,它会在屏幕上以以下格式显示测试进度
“Running test X on GPU n - Y tests remaining |======= | Z %”
其中
X 是序列中的当前测试编号
n 是 GPU 编号
Y 是剩余测试的数量
Z 是总体完成百分比
示例
Running test 208 on GPU 0 - 118 tests remaining |=================== | 64 %
注意:您可以使用命令行选项 disable_progress_bar 禁用测试进度显示。 |
2.3 返回代码
完成时,如果诊断程序正常完成,将向 shell 返回 0。如果发生错误,将向 shell 返回 1,如果需要重新测试,将返回 2。它还将在屏幕上打印“PASS”、“FAIL”或“RETEST”。
- PASS – 硬件通过诊断
- FAIL – 硬件未能通过诊断
- RETEST – 硬件设置未能通过诊断的预检查部分,并且出现警告消息描述问题。根据预检查消息纠正问题,然后再次测试。
2.4 错误日志
默认情况下,现场诊断会生成一个二进制日志文件,NVIDIA 工程师使用该文件来诊断故障卡。日志文件的名称包含基本的测试结果信息以及被测板卡的序列号
fieldiag_<PASS/FAIL/CONFIG>_<序列号>.log
- 通过板卡的日志文件名称示例:“fieldiag_PASS_1234567.log”。
- 故障板卡的日志文件名称示例:“fieldiag_FAIL_1234567.log”。
- 初始 SKU 配置失败的板卡的日志文件名称示例:“fieldiag_CONFIG_1234567.log”。
如果系统中测试了多张卡,则日志文件的名称中会包含第一个 GPU 的序列号。
如果问题阻止从卡中读取序列号,则返回的文件名将不包含序列号。
注意:您可以使用命令行选项 logfilename 覆盖默认日志文件名。 |
2.4.1 参数列表
表 1 列出了可选的命令行参数,并简要描述了每个参数。下一节将给出进一步的解释。
选项 | 描述 | 应用 |
device=<n> |
测试第 n 个设备。 |
全部 |
gen1 |
运行符合 Gen1 PCIE 的 fieldiag。 |
全部 |
gen2 |
运行符合 Gen2 PCIE 的 fieldiag |
全部 |
x8 |
运行符合 x8 PCIE 的 fieldiag。 |
全部 |
volterra_disable |
禁用稳压器从属温度的热监控。 |
Tesla X2070 Tesla X2090 |
gpu_temp=[ext,ADT7473,ADT7461, canoas,disabled,ipmi,int] |
使用指定的传感器获取 GPU 温度 |
|
gpu_temp=ext:使用外部温度芯片读取 GPU 温度,该芯片与 GPU 通信。 |
Tesla C2050 Tesla C2070 Tesla C2075 |
|
gpu_temp=ADT7473:通过受支持的主板 SMBus 从 ADT7473 读取 GPU 温度。 |
Tesla M2050 Tesla M2070 Tesla M2075 Tesla M2090 |
|
gpu_temp=ADT7461:通过受支持的主板 SMBus 从 ADT7461 读取 GPU 温度。 |
Tesla X2070 Tesla X2090 |
|
gpu_temp=canoas:从系统微控制器读取 GPU 温度。 |
Tesla S2050 |
|
gpu_temp=disabled:如果主板 SMBus 支持不可用且导致 fieldiag 测试失败,则禁用温度日志记录。 |
Tesla M2050 Tesla M2070 Tesla M2075 Tesla X2070 Tesla M2090 Tesla X2090 |
|
gpu_temp=ipmi:<id0>:…:<idn> 通过 IPMI 总线读取系统中每个 GPU 的 GPU 温度,其中 <idx> 指的是每个 GPU 的传感器 ID(冒号分隔)。 例如:<id0> 是 GPU0 的传感器 ID,依此类推。 当使用 device=<n> 测试多 GPU 系统中的一个 GPU 时,请用“0”填充未测试的 ID。 例如:gpu_temp=ipmi:0:0:0<id3> 用于 GPU3。 当不使用 device=<n> 进行测试时,必须为所有连接的 GPU 提供有效的 GPU 传感器 ID。 |
Tesla M2070 Tesla M2075 Tesla M2090 Linux |
|
gpu_temp=int:对于支持内部温度读取的板卡,使用内部 GPU 传感器电路读取温度。 |
Tesla K10Tesla K20(X) |
|
p0only |
仅在 PState 0 中运行现场诊断。 |
Tesla C2050 Tesla C2070 Tesla C2075 Tesla M2070 Tesla M2075 Tesla X2070 Tesla M2090 Tesla X2090 Tesla K10Tesla K20(X) |
logfilename=<filename path> |
指定一个不同于默认值的唯一日志文件名。 例如。logfilename=/var/log/mylogfile.log |
全部 |
enable_graphics |
启用图形功能(对于额外的测试覆盖率很有用)。有关使用此选项的要求,请参阅 2.4.2 附加说明 节。 |
Tesla K20(X) |
poll_interrupts |
使用 CPU 轮询处理 Tesla 卡中断。 |
全部 |
power_cap_limit=<X> |
指定板卡功耗上限(以瓦特为单位)。 例如。power_cap_limit=200(将功率限制为 200 瓦) |
Tesla K10Tesla K20(X)Tesla K40Linux |
disable_progress_bar |
阻止在屏幕上显示测试进度(请参阅 2.2 测试进度)。 |
全部 |
2.4.2 附加说明
本节提供有关特定命令行参数的附加说明。
enable_graphics
要启用图形模式运行现场诊断,必须在重新启动周期后立即运行现场诊断,且未加载 NVIDIA 驱动程序。此外,在现场诊断完成后,需要重新启动才能将卡恢复到正常运行状态。
3.0 在 Linux 下运行
本节适用于希望在 NVIDIA 提供的发行版以外的 Linux 发行版上运行现场诊断的用户。如果您正在使用 NVIDIA 提供的发行版,则可以跳过本节。
3.1 在 Linux 下运行的先决条件
内核版本
Linux 制造现场诊断需要最低内核版本 2.6.16。出于性能原因,建议使用版本 2.6.29 或更高版本。较旧的版本未经测试,可能无法工作。不支持内核 2.4。可以通过运行以下命令来确定正在运行的内核版本
$ uname -r
安装现场诊断内核模块
Linux 制造现场诊断包括一个内核模块。此模块的目的是向作为用户模式应用程序运行的现场诊断公开某些内核模式 API。为了能够安装内核模块,系统必须包含配置的内核源代码和开发工具,包括 make 和 gcc。没有它们,就无法编译内核模块。使用您的发行版提供的软件包管理器来安装内核源代码。通常,软件包名称为 kernel-sources 或 linux-sources。例如,在 Debian 上输入
$ sudo apt-get install linux-source-`uname -r`
如果您以 root 用户身份运行现场诊断,它将自动运行包含的 install_module.sh 脚本来编译和插入现场诊断内核模块。但是,如果现场诊断不是由 root 用户运行的,则有必要安装内核模块,这是建议的做法。
不要运行 NVIDIA 内核模块
为了成功运行现场诊断,系统中的 NVIDIA GPU 必须处于其原始的、未更改的状态,由 VBIOS 初始化。这意味着在运行现场诊断之前,X 不得在 NVIDIA GPU 上运行。务必确保未加载 NVIDIA 内核模块,否则系统可能会变得不稳定。为了卸载 NVIDIA 内核模块,必须首先杀死 X。即使 X 使用 vesa 或 fb 驱动程序,也建议杀死 X。
要在 SuSE 中禁用 X,请在 YaST 中禁用 xdm 服务。
在基于 Debian 的系统(包括 Ubuntu)上,输入
$ sudo update-rc.d -f gdm remove
如果不使用 gnome,请键入 kde 或 xdm 而不是 gdb(如果适用)。
卸载 Nouveau 驱动程序
一些较新的 Linux 发行版在内核中包含 nouveau 驱动程序。此驱动程序执行内核模式设置,并且还支持帧缓冲控制台。为了使现场诊断正常工作,必须卸载(最好是列入黑名单)此驱动程序,以便它不会在启动时自动加载。
禁用任何帧缓冲控制台
也不建议使用帧缓冲控制台,因为它们可能会在测试期间修改被测设备的内存。要禁用帧缓冲控制台,请编辑 /boot/grub/menu.lst 并确保内核参数包含 vga=normal 而不是任何其他值。确保它们不包含任何类似 video= 的内容。
3.2 安装内核模块
Linux 现场诊断依赖于内核驱动程序来处理需要使用内核模式 API 的情况。安装现场诊断内核模块的最简单方法是使用提供的安装脚本,您将在现场诊断运行空间中找到该脚本
$ ./install_module.sh --install
[注意:您无法从 root 用户没有写入权限的网络目录安装内核模块。在这种情况下,请将 install_module.sh 和 driver.tgz 复制到 /tmp 并在那里运行。]
此脚本还在 /etc/udev/rules.d/99-mods.rules 中创建一个 udev 配置文件。此文件指定可以访问内核模块的组。默认情况下,这是视频组,例如 NVIDIA 驱动程序的视频组。确保您的用户在此组中,或更改 99-mods.rules 文件中的组以匹配您的组之一。在某些系统上,安装脚本创建了文件 /etc/udev/permissions.d/99-mods.permissions,该文件仅列出驱动程序文件的用户、组和模式。
要找出驱动程序已分配给哪个组,请输入
$ ls -l /dev/mods
crw-rw---- 1 root video 10, 60 Jan 7 08:21 /dev/mods
要找出您所在的组,请输入
$ id
uid=4384(modsuser) gid=30(hardware) groups=30(hardware),1606(gpu-tesla)
如果您决定修改 99-mods.rules 中的组,则必须重新加载内核模块
$ modprobe -r mods
$ modprobe mods
要确保内核模块在系统启动时始终加载,请遵循您的发行版特定的指南。
在基于 Debian 的发行版(例如 Ubuntu)上,如果安装脚本没有添加 mods 模块名称,请将其添加到 /etc/modules。
在基于 SuSE 的发行版上,将 mods 模块名称添加到 /etc/sysconfig/kernel 文件中的 MODULES_LOADED_ON_BOOT 变量中。
在基于 RedHat 的发行版(例如 CentOS)上,将行 modprobe mods 添加到 /etc/rc.d/rc.local。
3.3 运行升级后的现场诊断版本
如果您在 Linux 发行版上运行了旧版本的现场诊断,则旧的 MODS 内核模块将与较新的现场诊断冲突并导致故障。
在运行较新的现场诊断之前,请按如下方式删除旧的 MODS 内核模块
- 导航到现场诊断子目录。
- 从命令行运行
./install_module.sh –u
当您运行较新的现场诊断时,将自动安装更新的 MODS 内核模块。
4.0 GPU 测试
软件包中的各种测试提供了对 GPU 中数值处理引擎、往返 GPU 的数据传输完整性的确认,以及 CUDA 程序可用的完整板载内存地址空间的测试覆盖率。
典型的 GPU 测试执行以下操作
- 禁用窗口系统以接管整个屏幕。
- 设置显示模式和刷新率。
- 循环 N 次
- 执行图形硬件的某些方面。
- 读回生成的图像。
- 计算 32 位 CRC,或可能的校验和,以与此 GPU 版本和平台的已知正确值(黄金值)进行比较。对于视频和光标测试,请使用硬件 DAC CRC。
- 如果黄金值不匹配,则报告错误并中止循环。
- 恢复之前的显示模式和刷新率。
- 将屏幕释放给操作系统。
- 报告测试状态。
每个测试都仔细选择随机测试参数,即避免无效值,正确覆盖边缘情况,并为更常见的情况提供适当的权重。
声明
声明
所有 NVIDIA 设计规范、参考板、文件、图纸、诊断程序、列表和其他文档(统称为“资料”)均按“原样”提供。NVIDIA 对这些资料不作任何明示、暗示、法定或其他方面的保证,并明确声明不承担所有关于不侵权、适销性和特定用途适用性的暗示保证。
所提供的信息被认为是准确可靠的。但是,NVIDIA 公司对使用此类信息造成的后果或因其使用而可能导致的侵犯第三方专利或其他权利的行为不承担任何责任。在 NVIDIA 公司任何专利权项下,未以暗示或其他方式授予任何许可。本出版物中提及的规范如有更改,恕不另行通知。本出版物取代并替换之前提供的所有其他信息。未经 NVIDIA 公司明确书面批准,NVIDIA 公司产品未被授权用作生命支持设备或系统中的关键组件。