GPU集群使用Tip:查询端口号占用情况、进程由哪个用户创建、运行时指定某一张显卡

在GPU集群上运行代码,会面临一些问题:
(1)跑着跑着GPU memory分配失败 – 因为有其他人在使用
(2)运行时显示端口号已被占用,需要你换一个端口。
这个时候一般采取的方法有:
(1)找到是哪个用户占用GPU memory
(2)查看目前哪些端口号没被占用。
因此,这篇blog主要记录出现这两种情况的解决方案。

运行nvidia-smi,查看集群使用情况

GPU集群使用Tip:查询端口号占用情况、进程由哪个用户创建、运行时指定某一张显卡_第1张图片
上图展示了GPU memory的总体和各个进程的占用情况。

进程由哪个用户创建?

以PID=3050为例。

$ ps -o user= -p 3050

运行结果:
在这里插入图片描述

查询端口号占用情况

执行以下命令:

$ ss -tuln | grep [port]

运行结果示例:
在这里插入图片描述
返回信息解读:

tcp: 表示这是 TCP 协议的连接。

LISTEN: 状态为 LISTEN 表示端口正在监听或等待接收传入的连接。

0: 这是“接收队列”的大小。在这里,它表示没有正在等待处理的连接。

128: 这是“最大队列长度”,即可以排队等待接受的连接数。在这里,它被设置为 128,这是 TCP 连接请求的标准最大队列长度。

0.0.0.0:8888[::]:8888: 这表示端口 8888 在所有 IPv4 地址(0.0.0.0)和所有 IPv6 地址([::])上都处于监听状态。换句话说,该端口正在接受来自任何 IP 地址的连接。

运行时指定某一张显卡

# codes to copy
# 1st
import torch
torch.cuda.set_device(1)

#2nd
CUDA_VISIBLE_DEVICES=1 python your_script.py

GPU集群使用Tip:查询端口号占用情况、进程由哪个用户创建、运行时指定某一张显卡_第2张图片GPU集群使用Tip:查询端口号占用情况、进程由哪个用户创建、运行时指定某一张显卡_第3张图片

后记

bash和shell的区别:
GPU集群使用Tip:查询端口号占用情况、进程由哪个用户创建、运行时指定某一张显卡_第4张图片

你可能感兴趣的:(机器学习,深度学习,linux,python)