调试和故障排除

一般问题报告

在报告问题时,请务必包含

  • nvidia-bug-report.log.gz - 由 nvidia-bug-report.sh 生成

  • dcgmi -v 的完整输出

  • 相关和/或请求的日志,如下所示

日志记录

本主题讨论了配置 DCGM 以生成详细日志的各种方法。

使用独立 Hostengine 启用日志记录

启动 nv-hostengine

  • 添加 -f /path/to/log 参数以指定日志写入位置

  • 添加 --log-level DEBUG 参数以指定 DEBUG 日志记录

此示例将从独立主机引擎收集调试日志,持续其生命周期。日志文件将写入 /tmp/nv-hostengine.log。示例

% sudo nv-hostengine -f /tmp/nv-hostengine.log --log-level DEBUG

使用嵌入式 Hostengine 启用日志记录

当使用嵌入式主机引擎时,如果以 root 用户或其他特权用户身份运行,请首先使用适当的命令更改为该用户,例如 sudo(8)。在您运行 sudo 的同一会话中

  • 使用 export __DCGM_DBG_FILE=/path/to/log 指定日志写入位置

  • 使用 export __DCGM_DBG_LVL=6 指定 DEBUG 日志记录

  • 使用 env | grep __DCGM_DBG 确认变量已设置

  • 运行所需的命令

此示例将在运行简短诊断时从嵌入式主机引擎收集调试日志。日志文件将写入 /tmp/embedded.log。示例

% sudo -i
  (prompts for password)
# export __DCGM_DBG_FILE=/tmp/embedded.log
# export __DCGM_DBG_LVL=6
# env | grep __DCGM_DBG
  (output)
  __DCGM_DBG_FILE=/tmp/embedded.log
  __DCGM_DBG_LVL=6
# dcgmi diag -r short
  ...

启用诊断日志记录

诊断程序会生成额外的有用日志。通过 dcgmi 运行诊断程序时

  • 添加 --debugLogFile /path/to/log 参数以指定日志写入位置

  • 添加 -d DEBUG 参数以指定 DEBUG 日志记录

此示例将从简短诊断收集调试日志。日志文件将写入 /tmp/nvvs.log。示例

% dcgmi diag --debugLogFile /tmp/nvvs.log -d DEBUG

启用 NVML 日志记录

在某些情况下,NVIDIA 工程师可能会请求 NVML 日志以帮助调试。

如果以 root 用户或其他特权用户身份运行,请首先使用适当的命令更改为该用户,例如 sudo(8)。在您运行 sudo 的同一会话中

  • 使用 export __NVML_DBG_FILE=/path/to/log 指定日志写入位置

  • 使用 export __NVML_DBG_LVL=DEBUG 指定 DEBUG 日志记录

  • 使用 env | grep __NVML_DBG 确认变量已设置

  • 在同一会话中,添加任何其他必要的环境变量(即,如果您正在运行嵌入式主机引擎)

  • 运行所需的命令

注意

如果使用独立主机引擎,则应为主机引擎和所需命令指定单独的 __NVML_DBG_FILE。请参阅以下示例。

此示例将从独立主机引擎收集 NVML 日志和调试日志,以及来自长时间诊断的 NVML 和调试日志。主机引擎的 NVML 日志将写入 /tmp/hostengine.nvml.log,诊断程序的 NVML 日志将写入 /tmp/nvvs.nvml.log。示例

% sudo -i
(prompts for password)
# export __NVML_DBG_FILE=/tmp/hostengine.nvml.log
# export __NVML_DBG_LVL=DEBUG
# env | grep __NVML_DBG
(output)
__NVML_DBG_FILE=/tmp/hostengine.nvml.log
__NVML_DBG_LVL=DEBUG
# nv-hostengine -f /tmp/nv-hostengine.log --log-level DEBUG
# export __NVML_DBG_FILE=/tmp/nvvs.nvml.log
# env | grep __NVML_DBG
(output)
__NVML_DBG_FILE=/tmp/nvvs.nvml.log
__NVML_DBG_LVL=DEBUG
# dcgmi diag -r long --debugLogFile /tmp/nvvs.log -d DEBUG
...