如何全面查看Linux服务器GPU信息:从基础到进阶指南

作者:狼烟四起2025.10.31 09:54浏览量:1

简介:本文详细介绍在Linux环境下查看服务器GPU信息的多种方法,涵盖命令行工具、驱动检测、性能监控等实用技巧,助力开发者高效管理GPU资源。

一、基础工具:快速获取GPU核心信息

1.1 lspci命令:识别GPU硬件型号

lspci是Linux系统下最基础的PCI设备检测工具,通过-v参数可显示详细设备信息。执行以下命令:

  1. lspci | grep -i vga
  2. lspci -v | grep -A 10 -i vga

输出示例:

  1. 01:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
  2. Subsystem: NVIDIA Corporation Device 2504
  3. Kernel driver in use: nvidia
  4. Kernel modules: nvidia

关键信息解析:

  • 设备地址(01:00.0)
  • 厂商型号(NVIDIA GA102)
  • 驱动状态(nvidia模块加载)

1.2 lsblk与udevadm:关联存储设备

对于支持GPU直通的虚拟化环境,可通过以下命令查看NVMe存储与GPU的拓扑关系:

  1. lsblk -o NAME,MODEL,TRAN
  2. udevadm info -a -p $(udevadm info -q path -n /dev/nvidia0) | grep DRIVERS

二、驱动层检测:确认软件支持状态

2.1 NVIDIA驱动专用工具

NVIDIA官方提供nvidia-smi工具,这是管理GPU最全面的命令行工具:

  1. nvidia-smi -q

输出包含:

  • GPU型号与UUID
  • 驱动版本(Driver Version)
  • CUDA版本(CUDA Version)
  • 温度与功耗(Power Draw)
  • 进程占用(Processes)

典型用例:

  1. # 监控实时状态(每2秒刷新)
  2. watch -n 2 nvidia-smi
  3. # 查看特定GPU的详细信息
  4. nvidia-smi -i 0 -q

2.2 AMD GPU检测方案

对于AMD显卡,可使用rocm-smiamdgpu工具链:

  1. sudo dmesg | grep -i amdgpu
  2. rocminfo | grep -A 10 "Name"

三、性能监控:深度分析GPU状态

3.1 基础性能指标

使用nvtop(需安装)实现类似任务管理器的可视化监控:

  1. sudo apt install nvtop # Debian/Ubuntu
  2. nvtop -d 1 # 每秒刷新

关键指标说明:

  • GPU利用率(Memory-Usage/GPU-Util)
  • 显存占用(Memory-Used)
  • 温度阈值(Temp)

3.2 高级监控方案

结合dcgm(NVIDIA Data Center GPU Manager)实现企业级监控:

  1. # 安装DCGM
  2. sudo apt install datacenter-gpu-manager
  3. # 启动监控服务
  4. sudo systemctl start dcgm-exporter
  5. # 查看指标(Prometheus格式)
  6. curl http://localhost:9400/metrics

四、编程接口:自动化信息采集

4.1 Python实现方案

使用pynvml库开发自动化监控脚本:

  1. import pynvml
  2. pynvml.nvmlInit()
  3. handle = pynvml.nvmlDeviceGetHandleByIndex(0)
  4. name = pynvml.nvmlDeviceGetName(handle)
  5. mem_info = pynvml.nvmlDeviceGetMemoryInfo(handle)
  6. temp = pynvml.nvmlDeviceGetTemperature(handle, 0)
  7. print(f"GPU: {name.decode()}")
  8. print(f"Memory Used: {mem_info.used//1024**2}MB")
  9. print(f"Temperature: {temp}°C")
  10. pynvml.nvmlShutdown()

4.2 Shell脚本集成

创建可配置的监控脚本gpu_monitor.sh

  1. #!/bin/bash
  2. GPU_INDEX=${1:-0}
  3. LOG_FILE="/var/log/gpu_monitor.log"
  4. while true; do
  5. TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
  6. UTIL=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader -i $GPU_INDEX | tr -d '%')
  7. TEMP=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader -i $GPU_INDEX)
  8. echo "[$TIMESTAMP] GPU$GPU_INDEX: Util=${UTIL}%, Temp=${TEMP}°C" >> $LOG_FILE
  9. sleep 5
  10. done

五、故障排查:常见问题解决方案

5.1 驱动未加载问题

症状:nvidia-smi报错”NVIDIA driver is not loaded”
解决方案:

  1. 检查内核模块:
    1. lsmod | grep nvidia
  2. 重新加载驱动:
    1. sudo modprobe -r nvidia
    2. sudo modprobe nvidia
  3. 检查Xorg配置(如适用):
    1. sudo nvidia-xconfig --query-gpu-info

5.2 多GPU识别异常

对于NUMA架构服务器,需确认PCIe拓扑:

  1. lstopo --no-io --no-bridges | grep -A 5 PCI
  2. numactl --hardware

六、企业级部署建议

6.1 容器化部署方案

在Kubernetes环境中通过Device Plugin管理GPU:

  1. # nvidia-device-plugin-daemonset.yaml
  2. apiVersion: apps/v1
  3. kind: DaemonSet
  4. metadata:
  5. name: nvidia-device-plugin
  6. spec:
  7. template:
  8. spec:
  9. containers:
  10. - name: nvidia-device-plugin
  11. image: nvidia/k8s-device-plugin:v0.12.2
  12. securityContext:
  13. privileged: true

6.2 监控系统集成

将GPU指标接入Prometheus+Grafana:

  1. 部署Node Exporter与DCGM Exporter
  2. 配置Prometheus抓取规则:
    1. scrape_configs:
    2. - job_name: 'nvidia-dcgm'
    3. static_configs:
    4. - targets: ['dcgm-exporter:9400']
  3. 在Grafana中导入NVIDIA官方仪表盘(ID: 12230)

七、安全注意事项

  1. 驱动安装权限控制:
    1. # 限制普通用户访问
    2. sudo chmod 750 /dev/nvidia*
    3. sudo chown root:video /dev/nvidia*
  2. 监控数据加密:
    1. # 使用SSL加密DCGM Exporter
    2. dcgm-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资源的精细化管理和故障预警。