Som*_*tha 11
我想当 nvidia-smi 显示占用 GPU 内存的进程时,问题已经得到解答。对我来说,尽管 nvidia-smi 没有显示任何进程,但 GPU 内存正在被使用,我想杀死它们。
在这种情况下,要使用的方法是使用 fusion 命令来查找使用特定 GPU 设备的进程。就我而言,我想终止使用 GPU 设备 3 的所有进程。这可以使用以下命令来完成:
sudo fuser -k /dev/nvidia3
Run Code Online (Sandbox Code Playgroud)
您可以使用 -ki 以交互方式终止进程。
接受的答案对我不起作用,可能是因为nvidia-smi
不同版本/硬件的格式不同。
我正在使用更简洁的命令:
nvidia-smi | grep 'python' | awk '{ print $3 }' | xargs -n1 kill -9
Run Code Online (Sandbox Code Playgroud)
您可以替换$3
awk表达式以适合您的nvidia-smi
输出。它是发生PID的第n列。
正如其他答案之一建议您可以使用:(将 5 替换为进程 ID 存在的列号)
nvidia-smi | grep 'python' | awk '{ print $5 }' | xargs -n1 kill -9
Run Code Online (Sandbox Code Playgroud)
如果您可能需要经常使用它,您可以为该命令创建一个别名:为此,您应该编辑~/.bash_aliases
文件:
nano ~/.bash_aliases
Run Code Online (Sandbox Code Playgroud)
并向其中添加以下行并保存文件:
alias killgpuprocess="nvidia-smi | grep 'python' | awk '{ print $5 }' | xargs -n1 kill -9"
Run Code Online (Sandbox Code Playgroud)
然后(这次只需要):
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
然后如果你跑
killgpuprocess
Run Code Online (Sandbox Code Playgroud)
它将杀死 GPU 上的现有进程。
您可以在nvidia-smi中抓取python,然后将PID传递给kill -9命令,例如:
sudo kill -9 $(nvidia-smi | grep'python'| sed -n's / | \ s * [0-9] \ s([0-9] )\ s。* / \ 1 / p'| sed'/ ^ $ / d')
归档时间: |
|
查看次数: |
10267 次 |
最近记录: |