上一篇
Linux快速关闭GPU计算进程
- Linux
- 2025-07-02
- 4124
要停止Linux中的GPU运算,先使用
nvidia-smi
命令查找占用GPU的进程ID(PID),然后使用
kill -9 PID
命令强制终止该进程即可释放GPU资源。
在Linux系统中停止GPU运算通常涉及终止正在使用GPU资源的进程,以下为详细的操作指南,涵盖多种场景与方法,确保操作安全有效:
确认GPU使用状态
在停止GPU运算前,需先定位占用GPU的进程:
-
NVIDIA显卡:
运行nvidia-smi
查看进程列表:nvidia-smi --query-compute-apps=pid,process_name,gpu_uuid --format=csv
输出示例:
pid, process_name, gpu_uuid 1234, python, GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
-
AMD显卡:
安装rocm-smi
后执行:rocm-smi --showpid
-
通用检测工具:
gpustat
(需安装:pip install gpustat
):gpustat -cp
htop
(按F2
> 添加GPU%
列):sudo apt install htop && htop
终止GPU进程的核心方法
方法1:通过PID结束进程
- 获取进程PID(如
1234
)后,发送终止信号:kill -9 1234 # 强制终止
或优雅停止:
kill -15 1234 # 请求进程自行退出
方法2:批量结束所有GPU进程
-
NVIDIA显卡专用命令:
结束所有使用GPU的进程(谨慎使用!):sudo nvidia-smi --gpu-reset -i 0 # 重置GPU(仅限紧急情况)
-
通用终止脚本:
创建脚本kill_gpu_procs.sh
:#!/bin/bash for pid in $(nvidia-smi --query-compute-apps=pid --format=csv,noheader | uniq); do kill -9 $pid done
运行:
chmod +x kill_gpu_procs.sh && sudo ./kill_gpu_procs.sh
方法3:使用系统工具
-
pkill
按进程名终止:
例如停止所有Python任务:pkill -f "python.*gpu"
-
htop
交互式终止:- 运行
htop
- 按
F4
搜索gpu
- 选中进程后按
F9
>SIGKILL
- 运行
高级管理场景
停止Docker容器中的GPU运算
- 查找容器ID:
docker stats --no-stream | grep gpu
- 停止容器:
docker stop 容器ID
禁用GPU驱动(彻底停止所有运算)
- 卸载NVIDIA内核模块:
sudo rmmod nvidia_drm nvidia_uvm nvidia_modeset nvidia
- 临时禁用GPU(重启后恢复):
sudo bash -c "echo 0 > /sys/bus/pci/devices/0000:01:00.0/enable" # 替换为GPU PCI地址
注意事项
- 权限要求:
kill
/nvidia-smi
需sudo
权限。- 避免误杀系统关键进程(如显示管理器)。
- 数据安全:
- 强制终止可能导致数据丢失,优先尝试
kill -15
。
- 强制终止可能导致数据丢失,优先尝试
- 多用户环境:
- 使用
who
确认进程所有者,避免影响他人任务。
- 使用
- 持久生效:
- 若需永久禁用GPU,需在BIOS或内核参数中设置(如
nouveau.modeset=0
)。
- 若需永久禁用GPU,需在BIOS或内核参数中设置(如
验证GPU是否停止
- 再次运行监控命令:
nvidia-smi # 应显示"No running processes found" watch -n 1 gpustat # 动态观察GPU利用率降至0%
- 检查温度变化(确认负载解除):
nvidia-smi -q -d temperature
引用说明:
- NVIDIA官方文档:nvidia-smi指南
- Linux内核手册:信号处理机制
- ROCm工具文档:rocm-smi使用
操作涉及系统底层权限,建议提前备份数据并遵循生产环境规范。