GPU占用显存,但看不到PID进程(已解决)

当我们使用nvidia-smi查看显卡占用时发现显存被占用,但是看不到pid进程
在这里插入图片描述
可以使用下面的命令,查看详细的pid进程号和占用的显存:

nvidia-smi --query-compute-apps=pid,used_memory --format=csv

这时会出现占用显存的进程:
在这里插入图片描述
解决:
直接使用sudo kill pid,kill指定pid进程,本文案例为22131,则为以下命令

sudo kill 22131

若出现没有找到文件时,我们可以尝试如下方法直接杀死进程:
fuser 命令来查找哪些进程正在使用 /dev/nvidia* 文件
awk 命令来处理 fuser 的输出,遍历每一行输出,以 "kill -9 " 开头,后面跟着每个进程的PID
执行前面生成的命令:

sudo fuser -v /dev/nvidia* |awk '{for(i=1;i<=NF;i++)print "kill -9 " $i;}' | sudo sh
### 如何释放已被占用GPU 显存 #### 方法一:通过 Java 检查并手动杀死进程 可以通过执行特定命令来检查当前 GPU显存占用情况,并找到对应的进程 ID (PID),随后将其终止以释放显存资源。具体操作如下: 1. 使用 `nvidia-smi` 命令获取 GPU 当前状态以及正在运行的相关进程信息[^1]。 2. 执行以下命令杀掉指定 PID 对应的进程: ```bash kill -9 {PID} ``` 3. 再次运行 `nvidia-smi` 查看显存是否已成功释放。 这种方法适用于因某些程序意外退出而未能正常释放显存的情况。 --- #### 方法二:利用 ComfyUI 自动化流程实现显存清理 对于基于 ComfyUI 平台的应用场景,可以设计一种自动化工作流,在完成主要任务后立即启动一个加载任何模型的空载任务,从而触发框架内部机制清空之前加载至显存中的内容[^2]。 以下是构建此解决方案的关键点: - **创建空载任务**:定义一个新的节点配置文件或者脚本片段用于描述无实际运算负载的操作序列; - **集成到现有流水线中**:确保每次正式作业完成后紧接着调用上述轻量级处理单元; 这种技术特别适合于连续批量生成图片或其他多媒体素材过程中频繁切换同预训练权重矩阵的情形下保持硬件性能稳定高效运转的需求环境之中。 示例 Python 脚本可能看起来像这样: ```python import comfyui_api # Hypothetical API module for interacting with ComfyUI def run_empty_task(): workflow = { 'nodes': [], 'connections': [] } comfyui_api.execute(workflow) # After completing the main task, invoke this function to clear memory. run_empty_task() ``` --- #### 方法三:合理估算与规划深度学习模型所需显存量 了解所使用的输入数据尺寸及其存储精度可以帮助开发者更好地预测整个项目生命周期内的资源消耗趋势。例如当处理大小为 \(224 \times 224\) 像素且通道数等于\(3\)的标准RGB彩色照片时,默认采用单字节整型表示法则每张仅需大约\(150KB\)[^3];然而一旦转换成浮点数值形式,则总体需求将膨胀四倍达到约\(600KB\)级别. 因此建议在开发初期即充分考虑这些因素以便做出适当调整比如降低分辨率选用更紧凑的数据类型等等措施均有助于减少必要的内存浪费现象发生进而延长设备使用寿命提高整体工作效率。 --- ### 总结 以上介绍了三种同的策略用来应对同类型下的GPU显存管理挑战——无论是针对传统应用程序还是现代AI框架都有相应的解决办法可供选择实施。根据具体的业务背景和个人偏好挑选最适合自己的方式至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值