概述

随着AI和高性能计算的快速发展,GPU服务器已成为数据中心的重要基础设施。GPU驱动的稳定运行直接决定了计算任务的成功率。本文详细介绍NVIDIA GPU驱动的手动安装、常用运维命令、常见故障排查以及日常监控方法,帮助运维人员高效管理GPU服务器。

一、环境准备

1.1 确认硬件兼容性

安装驱动前,首先确认GPU型号和服务器架构:

1
2
3
4
5
6
# 查看PCIe插槽上的GPU设备
lspci | grep -i nvidia

# 典型输出示例
# 1a:00.0 VGA compatible controller: NVIDIA Corporation GA100 [A100 80GB] (rev a1)
# 1d:00.0 VGA compatible controller: NVIDIA Corporation GA100 [A100 80GB] (rev a1)

支持的驱动版本需与GPU架构匹配:Tesla/Volta/Ampere架构建议使用470+驱动,Ada Lovelace/Hopper架构建议使用525+驱动。

1.2 检查当前环境

1
2
3
4
5
6
7
8
9
10
# 查看操作系统版本
cat /etc/os-release

# 查看当前已安装的NVIDIA驱动
lsmod | grep nvidia
nvidia-smi

# 彻底卸载旧驱动(如需要重装)
sudo apt-get --purge remove nvidia-* libnvidia-*
sudo rm /etc/modprobe.d/nvidia*.conf

二、驱动安装

2.1 使用官方.run安装包(通用方法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 1. 下载驱动(以525版本为例)
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/525.125.06/NVIDIA-Linux-x86_64-525.125.06.run

# 2. 禁用nouveau开源驱动
sudo bash -c "echo -e 'blacklist nouveau\noptions nouveau modeset=0' > /etc/modprobe.d/blacklist-nouveau.conf"
sudo update-initramfs -u

# 3. 重启进入命令行模式
sudo systemctl set-default multi-user.target
sudo reboot

# 4. 在TTY终端执行安装
sudo systemctl stop gdm3 # 停止图形界面
sudo bash NVIDIA-Linux-x86_64-525.125.06.run --no-questions

# 5. 恢复图形启动
sudo systemctl set-default graphical.target
sudo reboot

# 6. 验证安装
nvidia-smi

2.2 使用包管理器安装(Ubuntu/Debian)

1
2
3
4
5
6
7
8
9
10
11
# 添加NVIDIA官方仓库
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update

# 安装驱动和CUDA工具包
sudo apt-get install nvidia-driver-535-server cuda-toolkit-12-2

# 重启并验证
sudo reboot
nvidia-smi

三、日常运维命令

3.1 基础监控

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看所有GPU状态(最常用命令)
nvidia-smi

# 实时监控,每秒刷新
nvidia-smi dmon -s u

# 每500ms刷新一次GPU状态
watch -n 0.5 nvidia-smi

# 查看详细GPU信息
nvidia-smi -q

# 查询特定GPU(索引从0开始)
nvidia-smi -i 0
nvidia-smi -i 0,1 # 查看GPU 0和1

3.2 进程与资源管理

1
2
3
4
5
6
7
8
9
10
11
12
# 查看GPU上运行的进程
nvidia-smi p

# 按内存使用排序查看进程
nvidia-smi p --sort-by=memory

# 查看GPU显存使用详情
nvidia-smi --query-gpu=index,name,memory.total,memory.used,memory.free --format=csv

# 强制终止占用GPU的进程(慎用)
nvidia-smi --id=0 --reset # 重置单个GPU
kill -9 <PID> # 终止特定进程

3.3 性能调优

1
2
3
4
5
6
7
8
9
10
11
# 设置GPU持久模式(适合长期运行场景,减少驱动加载延迟)
sudo nvidia-smi -pm ENABLED

# 设置功率上限(限制功耗)
sudo nvidia-smi -i 0 -pl 250 # 限制GPU 0功率为250W

# 查看GPU时钟频率
nvidia-smi -q -d CLOCK

# 设置GPU时钟频率(需要root)
sudo nvidia-smi -i 0 -lmc 500,1500 # 锁定显存和核心时钟

四、常见故障排查

4.1 驱动加载失败

现象nvidia-smi报错NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver

1
2
3
4
5
6
7
8
9
10
11
# 检查驱动模块是否加载
lsmod | grep nvidia

# 手动加载驱动模块
sudo modprobe nvidia

# 检查模块加载日志
dmesg | grep -i nvidia | tail -20

# 验证驱动版本
cat /proc/driver/nvidia/version

4.2 GPU掉卡或不可见

现象nvidia-smi只能看到部分GPU,或完全看不到GPU

1
2
3
4
5
6
7
8
9
10
11
# 检查PCIe链路状态
sudo nvidia-smi -q -d PAGE_RETIREMENT

# 查看PCIe错误计数
sudo lspci -vvv -s $(nvidia-smi --query-gpu=pci.bus_id --format=csv,noheader | head -1) | grep -i error

# 检查NVLink/PCIe拓扑
nvidia-smi topo -m

# 重新扫描PCIe设备
sudo echo 1 > /sys/bus/pci/rescan

4.3 Xid错误(驱动内部错误)

现象nvidia-smi显示Xid错误,GPU可能降级或重启

1
2
3
4
5
6
7
8
9
10
11
# 查看Xid错误详情
dmesg | grep -E "NVRM|Xid"

# 典型Xid错误含义:
# Xid 13: GPU内存ECC错误
# Xid 31: GPU肛门或计算引擎故障
# Xid 45: PCIe链路降级

# 收集错误日志供厂商分析
nvidia-smi -q > gpu_status_$(date +%Y%m%d).log
sudo cat /var/log/syslog | grep -i nvidia >> gpu_status_$(date +%Y%m%d).log
1
2
3
4
5
6
7
8
9
# 检查NVLink状态
nvidia-smi nvlink -s

# 查看PCIe协商速率
nvidia-smi -q -d PCI

# 常见问题:协商速率低于预期(如应为16GT/s实际只有5GT/s)
# 可能原因:插槽松动、线缆质量问题、PCIe版本不匹配
# 解决方案:重新插拔GPU、检查线缆、更换插槽

五、监控与告警配置

5.1 Prometheus + node_exporter指标

node_exporter支持GPU指标采集(需额外配置):

1
2
3
4
5
6
7
8
# prometheus.yml 添加
scrape_configs:
- job_name: 'gpu_metrics'
static_configs:
- targets: ['localhost:9100']
relabel_configs:
- source_labels: [__address__]
target_label: instance

5.2 基础告警阈值建议

指标 警告阈值 严重阈值
GPU利用率 < 30% (持续1小时) -
显存使用率 > 85% > 95%
GPU温度 > 75°C > 85°C
驱动报错频率 1次/小时 5次/小时

5.3 日志收集

建议将GPU相关日志统一收集至日志平台,便于问题追溯:

1
2
3
# 配置syslog收集GPU事件
# /etc/rsyslog.d/30-nvidia.conf
:msg, contains, "nvidia" /var/log/nvidia-gpu.log

总结

GPU服务器运维的核心在于规范的安装流程、完善的监控体系以及快速的问题定位能力。建议运维团队建立GPU健康档案,记录每台服务器的GPU型号、驱动版本、历史故障等信息。同时,制定驱动升级的标准流程,在升级前充分测试,确保计算任务不受影响。日常巡检应将GPU状态纳入必检项目,将故障消灭在萌芽阶段。