阿里云显存被占用

文章讲述了如何处理CUDA内存溢出错误,通过nvidia-smi检查占用显存情况,找到占用内存的进程(PID),并使用`kill`命令终止进程以释放内存。提到的方法包括查询详细PID、查找与Python相关的进程以及使用fuser命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 报错:RuntimeError: CUDA out of memory. Tried to allocate 560.00 MiB (GPU 0; 23.70 GiB total capacity; 3.57 MiB already allocated; 516.56 MiB free; 4.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

查看显存:

nvidia-smi 

显存Memory Usage被占用,但是显存利用率GPU-Util是0%,且看不到进程名

 原因:显存利用率为0%,说明现在没有进程在跑;显存使用率占满,说明有进程跑完之后,没有释放掉,一直静静地占着地儿。

方法一:

1.使用下面的命令,查看详细的pid进程号和占用的显存

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

 2.sudo kill pid,kill指定pid进程,本文案例为60547,则为以下命令

sudo kill 60547

报错 :No Such Process

原因:这个命令查询到的进程ID(PID) 是 nvidia-smi 自己维护的,而不是操作系统维护的真实PID

或者直接执行以下命令

方法二:

1.查看正在运行的与 "python" 相关的进程

ps aux | grep python

 2.其中62363是进程的进程号(PID),使用kill -9 PID1 PID2 PID3 ... PIDn 将占内存的进程(非系统的进程,应该是你自己之前执行过的程序)全kill掉

kill -9 62363

方法三(未验证):

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占用显存,但看不到PID进程-优快云博客

终止进程后,GPU显存仍被占用问题 | kill -9彻底杀死进程 | ps aux|grep python_进程中途断开,显存未释放-优快云博客 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值