GPU 常见排查工具与命令查看系统信息检查项命令/方法说明硬件厂商dmidecode -t system (提取 Manufacturer)获取系统制造商信息CPU 型号awk -F': ' '/model name/{print $2; exit}' /proc/cpuinfo提取 CPU 型号名称操作系统awk -F'"' '/PRETTY_NAME/{print $2}' /etc/os-release显示操作系统名称(如 Ubuntu 20.04)内核版本uname -r查看当前运行的内核版本OFED 版本ofed_info -s查看 InfiniBand OFED 驱动版本主机 IPhostname -I | awk '{print $1}'获取主机第一个 IP 地址内核日志dmesg打印或控制内核环形缓冲区系统日志cat /var/log/messages查看系统日志消息(常见于较老系统)OS 信息cat /etc/issueuname -rcat /etc/*-release收集操作系统发行版、内核版本等详细信息Fabric 日志cat /var/log/fabricmanager.log查看 NVIDIA Fabric Manager 日志内核模块lsmod显示当前已加载的内核模块PCI 设备lspci -tvlspci -vvd 10de:lspci -vvvlspci -xxxx以不同详细级别查看 PCI 设备信息(特别是 NVIDIA 设备)CPU 信息lscpucpupower frequency-info显示 CPU 架构、核心数、频率等信息Systemd 日志journalctl --since "10 days ago"journalctl | head -n 15000查看 systemd 管理的日志(按时间或行数限制)IPMI 信息ipmitool fru listipmitool sdr listipmitool sel list列出 IPMI 的 FRU(硬件资产)、传感器数据和系统事件日志NVIDIA 驱动ls /sys/class/video/*modinfo $(modprobe -n nvidia)rpm -qa | grep fabric查看 NVIDIA 驱动模块文件及相关软件包NVIDIA SMInvidia-sminvidia-smi -qnvidia-smi topo -m查看 GPU 状态、详细信息及拓扑结构GPU ECCnvidia-smi -q | grep -A 5 "ECC Errors|Memory Location|Remapped Rows"提取 GPU 的 ECC 错误和内存重映射情况NVIDIA Bug 报告nvidia-bug-report.sh运行 NVIDIA 官方错误报告脚本,生成诊断压缩包GPU 显存占用使用 python 打印 GPU 显存占用信息脚本如下所示:
import torch
import subprocess
from pynvml import *
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print(torch.cuda.get_device_properties(device))
result = subprocess.run(['nvidia-smi'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
print(result.stdout)
nvmlInit()
handle = nvmlDeviceGetHandleByIndex(0)
uuid = nvmlDeviceGetUUID(handle)
print(f"gpu uuid {uuid} ")
info = nvmlDeviceGetMemoryInfo(handle)
print(f"总显存: {info.total}")
print(f"已使用显存: {info.used}")
print(f"剩余显存: {info.free}")
bytes_in_gb = 1024 ** 3
desired_memory_gb = 5
desired_memory_bytes = desired_memory_gb * bytes_in_gb
float_size = 4
num_floats = desired_memory_bytes // float_size
try:
tensor = torch.cuda.FloatTensor(num_floats)
print(f"success {desired_memory_gb} GB")
except RuntimeError as e:
print(f"fail: {e}")
info = nvmlDeviceGetMemoryInfo(handle)
print(f"总显存: {info.total}")
print(f"已使用显存: {info.used}")
print(f"剩余显存: {info.free}")
nvmlShutdown()
一键统计 gpu 信息#!/bin/bash
DATE=`date +%Y%m%d_%H%M%S`
HOSTNAME=$(cat /etc/hostname |awk -F '[.]' '{print $1 "." $2}')
SN=$(dmidecode -t system|grep -i "Serial Number" |awk '{print $3}')
LOG_DIR=gpulog_sn${SN}_${HOSTNAME}_${DATE}
LOG_NAME=gpulog_sn${SN}_${HOSTNAME}_${DATE}
mkdir -p ${LOG_DIR}
dmesg > ${LOG_DIR}/dmesg.log
cat /var/log/messages > ${LOG_DIR}/messages.log
cat /etc/issue >> ${LOG_DIR}/os_info.log
uname -r >> ${LOG_DIR}/os_info.log
cat /etc/*release >> ${LOG_DIR}/os_info.log
cat /var/log/fabricmanager.log >> ${LOG_DIR}/fabric_manger.log 2>>/dev/null
lsmod >>${LOG_DIR}/lsmod.log
lspci -tv > ${LOG_DIR}/lspci_tv.log
lspci -vvd 10de: > ${LOG_DIR}/lspci_gpu_vv.log
lspci -vvv > ${LOG_DIR}/lspci_vv.log
lspci -xxxx > ${LOG_DIR}/lspci_xxxx.log
lscpu > ${LOG_DIR}/lscpu.log
cpupower frequency-info > ${LOG_DIR}/cpupower_frequency.log 2>>/dev/null
journalctl --since `date -d "10 days ago" "+%Y-%m-%d"` > ${LOG_DIR}/journalctl_before_10_days.log 2>>/dev/null
journalctl | head -n 15000 > ${LOG_DIR}/journalctl_head_15000.log 2>>/dev/null
ipmitool fru list > ${LOG_DIR}/ipmi_fru.log 2>>/dev/null
ipmitool sdr list > ${LOG_DIR}/ipmi_sdr.log 2>>/dev/null
ipmitool sel list > ${LOG_DIR}/ipmi_sel.log 2>>/dev/null
ls /lib/modules/`uname -r`/kernel/drivers/video/* > ${LOG_DIR}/nvidia-driver.log 2>>/dev/null
modinfo /lib/modules/`uname -r`/kernel/drivers/video/nvidia.ko >> ${LOG_DIR}/nvidia-driver.log
rpm -qa |grep -i fabric >>${LOG_DIR}/nvidia_fabric-manger.log
nvidia-smi > ${LOG_DIR}/nvidia-smi.log 2>>/dev/null
nvidia-smi -q > ${LOG_DIR}/nvidia-smi_query.log 2>>/dev/null
nvidia-smi -q | grep -A 9 "ECC Errors"|awk '{print $1,$2,$3,$4,$5}' >>${LOG_DIR}/gpu_ecc.log 2>>/dev/null
nvidia-smi -q |grep -i Remapping >> ${LOG_DIR}/gpu_ecc.log 2>>/dev/null
nvidia-smi topo -m > ${LOG_DIR}/nvidia-smi_topo.log 2>>/dev/null
nvidia-bug-report.sh --output-file ${LOG_DIR}/nvidia-bug-report-sn${SN}_${HOSTNAME}.log 2>>/dev/null
tar -zcvf ${LOG_NAME}.tar.gz ${LOG_DIR}
rm -rf ${LOG_DIR}
常见排查问题命令基础信息收集命令 : date +%Y%m%d_%H%M%S
功能接口 : 时间戳获取用途说明 : 获取当前时间用于日志命名命令 : cat /etc/hostname
功能接口 : 主机名获取用途说明 : 获取系统主机名命令 : dmidecode -t system
功能接口 : 系统序列号获取用途说明 : 获取硬件序列号用于标识设备系统日志收集命令 : dmesg
功能接口 : 内核日志导出用途说明 : 导出内核环形缓冲区日志命令 : cat /var/log/messages
功能接口 : 系统消息日志用途说明 : 导出系统级消息日志命令 : journalctl –since
功能接口 : systemd日志查询用途说明 : 获取指定时间范围内的系统日志命令 : journalctl | head -n 15000
功能接口 : 最新日志截取用途说明 : 获取最新的系统日志记录操作系统信息命令 : cat /etc/issue
功能接口 : 系统提示信息用途说明 : 获取登录前的系统提示信息命令 : uname -r
功能接口 : 内核版本查询用途说明 : 获取当前运行的内核版本命令 : cat /etc/*release
功能接口 : 发行版信息用途说明 : 获取Linux发行版本详细信息硬件信息收集命令 : lspci -tv
功能接口 : PCI设备树状显示用途说明 : 以树状结构显示PCI设备连接关系命令 : lspci -vvd 10de:
功能接口 : NVIDIA GPU详细信息用途说明 : 显示NVIDIA GPU设备的详细配置命令 : lspci -vvv
功能接口 : PCI设备详细信息用途说明 : 显示所有PCI设备的详细信息命令 : lspci -xxxx
功能接口 : PCI配置空间用途说明 : 显示PCI设备的完整配置空间内容命令 : lscpu
功能接口 : CPU架构信息用途说明 : 显示CPU架构、核心数等信息命令 : cpupower frequency-info
功能接口 : CPU频率信息用途说明 : 显示CPU频率调节相关信息内核模块信息命令 : lsmod
功能接口 : 已加载模块列表用途说明 : 列出当前已加载的内核模块命令 : ls /lib/modules/uname -r/kernel/drivers/video/*
功能接口 : 视频驱动模块列表用途说明 : 列出视频驱动目录下的内核模块命令 : modinfo /lib/modules/uname -r/kernel/drivers/video/nvidia.ko
功能接口 : 驱动模块信息用途说明 : 显示NVIDIA驱动模块的详细信息IPMI管理信息命令 : ipmitool fru list
功能接口 : FRU信息查询用途说明 : 获取固件/硬件可更换单元信息命令 : ipmitool sdr list
功能接口 : 传感器数据用途说明 : 获取系统传感器数据记录命令 : ipmitool sel list
功能接口 : 系统事件日志用途说明 : 获取系统事件日志记录NVIDIA GPU 状态监控命令 : nvidia-smi
功能接口 : GPU基本状态用途说明 : 显示GPU温度、使用率、显存等基本信息命令 : nvidia-smi -q
功能接口 : GPU详细查询用途说明 : 显示GPU的详细状态信息命令 : nvidia-smi -q | grep -A 9 “ECC Errors”
功能接口 : ECC错误信息用途说明 : 提取GPU ECC内存错误信息命令 : nvidia-smi -q | grep -i Remapping
功能接口 : 内存重映射信息用途说明 : 获取GPU内存重映射相关信息命令 : nvidia-smi topo -m
功能接口 : GPU拓扑结构用途说明 : 显示GPU之间的连接拓扑关系命令 : nvidia-bug-report.sh
功能接口 : 官方诊断报告用途说明 : 运行NVIDIA官方诊断脚本生成完整报告软件包与服务信息命令 : rpm -qa | grep -i fabric
功能接口 : Fabric Manager 检查用途说明 : 检查是否安装NVIDIA Fabric Manager【机器有 NVLink 就需要开启】命令 : cat /var/log/fabricmanager.log
功能接口 : Fabric Manager日志用途说明 : 收集Fabric Manager服务日志←
Previous PostNext
Post →