要查看gpu占用,这里介绍两个方法,一个是官方的nvidia-smi,装完显卡驱动就能使用了;另一个是gpustat,更方便于查看gpu使用情况。
1 nvidia-smi
在终端输入命令nvidia-smi
,可以查看显卡使用情况:
但是,这样只能查看某一时刻的显卡使用情况。为了实时显示显卡的使用情况,可以添加参数。在终端输入命令:
watch -n 5 nvidia-smi
这样系统就会每隔5秒刷新一次使用情况。这里的5
可以依据需要进行修改。
如上图所示,在下面的虚线框里显示了占用GPU的进程信息。每个进程有一个唯一的PID,如果想关闭掉某个进程,可以使用命令:
sudo kill -9 PID
比如我这里要结束掉占用GPU内存最大的PID为12713的进程,则执行命令sudo kill -9 12713
,然后再查看GPU使用情况,如下图所示:
2 gpustat
详情及历史版本可以查看github链接,安装方式有如下三种:
pip install gpustat
pip install --user gpustat
pip install git+https://github.com/wookayin/gpustat.git@master
可以都尝试一下,哪个能成功安装就行。我是用第二个命令安装成功的,第一个和第三个都不行。但是安装完成后提示我没有添加环境变量,如下图所示:
所以在命令行使用gpustat
的时候显式找不到命令。添加环境变量可以网上直接搜方法,我是在~/.bashrc
文件末尾添加了export PATH=$PATH:/home/xxx/.local/bin
这里xxx就是上图打码的部分,看你电脑的路径了。完成后保存然后命令行执行source ~/.bashrc
即可。
安装完成后,在命令行输入gpustat
即可看到当前gpu的使用情况,如下图所示:
每一项的内容含义为:
当然,使用gpustat也可以通过watch命令实时查看gpu使用情况,命令如下:
watch -n 1 gpustat
3 两种方式对比
nvidia-smi
:
- 显式内容更全面,包括PID(可用于结束进程)
- 使用格网线,更美观
gpustat
:
- 可以清楚看到哪些人哪些任务占用了多少显存(在多人使用同一服务器的情况下很实用)
- 内容精炼,但是看不到PID
总结就是两种方法各有优劣,在服务器下两者搭配使用效果更佳!
4 完整查看所有进程PID方法
如上所述,如果你需要终止某个进程,你需要首先获知它的PID,而nvidia-smi方法才能看到PID。但是,这种方式通常只能看到有限数量的PID(通常是8个),多余的你就看不到了,如下图所示:
那如果我要终止这里没显示出来的一些进程,该怎么查看PID呢?使用如下命令即可:
fuser -v /dev/nvidia*
显示如下:
这里首先分GPU进行进程显示,然后下面的nvidiactl是总的按PID降序进行显示的结果。
5 一键杀掉某用户所有进程的方法
如上所述,如果我同时在后台跑了很多个任务,我现在想将它们全部kill掉。如果通过PID一个个kill,那感觉有点麻烦。要批量kill的话,可以自己写一个脚本,然后将目标PID的进程给kill了。还一种方法是,直接将这个用户的所有进程给kill掉(注意,是该用户运行在GPU上的所有进程,所以如果并不是想全部清空,就不要用这个方法)。
比如我要kill掉名为xiaoming的用户的所有显存占用,有两种命令,效果是一样的,如下:
pkill -u xiaoming
killall -u xiaoming
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)