GPU调试

在 Linux 系统中,查询运行在某个特定 GPU 上的进程主要有以下几种方法,最常用的是 NVIDIA 官方提供的工具。

1. 使用 nvidia-smi (最常用)

这是最直接的方法。在终端输入以下命令:

bash 复制代码
nvidia-smi

如何查看:

  1. 在输出的上半部分,你会看到 GPU 的列表(ID 从 0 开始)。
  2. 往下看,找到 "Processes"(进程)表格。
  3. 关键列:
    • GPU UUID / GPU: 标识该进程运行在哪个 GPU 上。
    • PID: 进程 ID。
    • Type: 通常是 C (Compute 计算进程,如 Python/PyTorch) 或 G (Graphics 图形进程)。
    • Process Name: 进程名称。

只显示特定 GPU 的进程:

如果你只想看 GPU 0 上的进程,可以使用:

bash 复制代码
nvidia-smi --query-compute-apps=gpu_uuid,pid,process_name,used_memory --format=csv -i 0

2. 使用 fuser 查询设备文件

GPU 在 Linux 中被视为设备文件。你可以通过查询这些文件的使用者来找到进程。

步骤:

  1. 查看哪些进程占用了 /dev/nvidia* 设备:

    bash 复制代码
    sudo fuser -v /dev/nvidia*
  2. 输出解读:

    • 列表会显示 PID。
    • 通常 /dev/nvidia0 对应 GPU 0,/dev/nvidia1 对应 GPU 1,以此类推。

3. 结合 psnvidia-smi 进行关联查询

如果你通过 nvidia-smi 看到了 PID,想进一步查看这个 PID 具体是什么任务(例如是哪个 Python 脚本),可以使用 ps 命令。

查询特定 PID 的详细信息:

bash 复制代码
ps -fp <PID>

或者

bash 复制代码
ps aux | grep <PID>

批量查询(高级用法):

你可以编写一行命令,直接列出 GPU 进程及其对应的命令行参数:

bash 复制代码
# 先获取所有 GPU 进程的 PID,然后查询这些 PID 的详细信息
nvidia-smi --query-compute-apps=pid --format=csv,noheader,nounits | xargs -I {} ps -p {} -o pid,ppid,cmd,%mem,%cpu --sort=-%mem

4. 使用 gpustat (第三方工具,更美观)

如果你安装了 gpustat (可以通过 pip install gpustat 安装),它提供了一个更简洁的界面。

安装与使用:

bash 复制代码
pip install gpustat
gpustat -cp

输出特点:

  • -c 参数显示命令名(Command)。
  • -p 参数显示 PID。
  • 它通常能直接显示是哪个 Python 脚本在占用,比原生 nvidia-smi 更直观。
相关推荐
caodongwang1 天前
GPU Direct RDMA调研
gpu·rdma·gdr
archi-dreamer3 天前
AMDGPU后端RegMask使用介绍
gpu·llvm·编译器与工具链
fhqlongteng4 天前
RK3576上electron调用GPU的功能设置方法
前端·javascript·electron·gpu·rk3576
Dfreedom.7 天前
算子融合:从硬件本质到性能飞跃的深度学习优化艺术
人工智能·深度学习·gpu·gpu加速·模型加速·算子融合·模型计算
佳杰云星8 天前
如何给大模型集群选“大脑”?智算调度与管理平台 10 维选型指南(附选型评分表)
人工智能·kubernetes·大模型·云计算·gpu·算力调度·智算中心
archi-dreamer9 天前
AMDGPU 后端 ABI 总览
gpu·llvm·编译器与工具链
林多16 天前
【Android】 GPU过度绘制实现原理
android·gpu·性能·实现原理·过度绘制·overdraw
数据与后端架构提升之路19 天前
深度学习性能调优全景指南:数据、计算、显存、通信四大瓶颈的破局之道
深度学习·gpu·性能调优
Eloudy21 天前
华为UB协议与NVIDIA NVLink/NVSwitch在PCIe GPU场景下的技术替代性分析
gpu
木雷坞24 天前
内网模型服务启动链路分层实践
docker·容器·gpu