简介:本文详细介绍在Linux环境下查看服务器GPU信息的多种方法,涵盖命令行工具、驱动检测、性能监控等实用技巧,助力开发者高效管理GPU资源。
lspci是Linux系统下最基础的PCI设备检测工具,通过-v参数可显示详细设备信息。执行以下命令:
lspci | grep -i vgalspci -v | grep -A 10 -i vga
输出示例:
01:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)Subsystem: NVIDIA Corporation Device 2504Kernel driver in use: nvidiaKernel modules: nvidia
关键信息解析:
对于支持GPU直通的虚拟化环境,可通过以下命令查看NVMe存储与GPU的拓扑关系:
lsblk -o NAME,MODEL,TRANudevadm info -a -p $(udevadm info -q path -n /dev/nvidia0) | grep DRIVERS
NVIDIA官方提供nvidia-smi工具,这是管理GPU最全面的命令行工具:
nvidia-smi -q
输出包含:
典型用例:
# 监控实时状态(每2秒刷新)watch -n 2 nvidia-smi# 查看特定GPU的详细信息nvidia-smi -i 0 -q
对于AMD显卡,可使用rocm-smi或amdgpu工具链:
sudo dmesg | grep -i amdgpurocminfo | grep -A 10 "Name"
使用nvtop(需安装)实现类似任务管理器的可视化监控:
sudo apt install nvtop # Debian/Ubuntunvtop -d 1 # 每秒刷新
关键指标说明:
结合dcgm(NVIDIA Data Center GPU Manager)实现企业级监控:
# 安装DCGMsudo apt install datacenter-gpu-manager# 启动监控服务sudo systemctl start dcgm-exporter# 查看指标(Prometheus格式)curl http://localhost:9400/metrics
使用pynvml库开发自动化监控脚本:
import pynvmlpynvml.nvmlInit()handle = pynvml.nvmlDeviceGetHandleByIndex(0)name = pynvml.nvmlDeviceGetName(handle)mem_info = pynvml.nvmlDeviceGetMemoryInfo(handle)temp = pynvml.nvmlDeviceGetTemperature(handle, 0)print(f"GPU: {name.decode()}")print(f"Memory Used: {mem_info.used//1024**2}MB")print(f"Temperature: {temp}°C")pynvml.nvmlShutdown()
创建可配置的监控脚本gpu_monitor.sh:
#!/bin/bashGPU_INDEX=${1:-0}LOG_FILE="/var/log/gpu_monitor.log"while true; doTIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")UTIL=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader -i $GPU_INDEX | tr -d '%')TEMP=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader -i $GPU_INDEX)echo "[$TIMESTAMP] GPU$GPU_INDEX: Util=${UTIL}%, Temp=${TEMP}°C" >> $LOG_FILEsleep 5done
症状:nvidia-smi报错”NVIDIA driver is not loaded”
解决方案:
lsmod | grep nvidia
sudo modprobe -r nvidiasudo modprobe nvidia
sudo nvidia-xconfig --query-gpu-info
对于NUMA架构服务器,需确认PCIe拓扑:
lstopo --no-io --no-bridges | grep -A 5 PCInumactl --hardware
在Kubernetes环境中通过Device Plugin管理GPU:
# nvidia-device-plugin-daemonset.yamlapiVersion: apps/v1kind: DaemonSetmetadata:name: nvidia-device-pluginspec:template:spec:containers:- name: nvidia-device-pluginimage: nvidia/k8s-device-plugin:v0.12.2securityContext:privileged: true
将GPU指标接入Prometheus+Grafana:
scrape_configs:- job_name: 'nvidia-dcgm'static_configs:- targets: ['dcgm-exporter:9400']
# 限制普通用户访问sudo chmod 750 /dev/nvidia*sudo chown root:video /dev/nvidia*
# 使用SSL加密DCGM Exporterdcgm-exporter --web.listen-address=:9400 --web.telemetry-path=/metrics --tls.cert-file=/path/cert.pem --tls.key-file=/path/key.pem
通过上述方法组合,开发者可以构建从硬件识别、驱动验证到性能监控的完整GPU管理方案。根据实际需求,可选择轻量级工具(如nvidia-smi)或企业级解决方案(DCGM+Prometheus),实现GPU资源的精细化管理和故障预警。