nvitop完全指南:一站式GPU资源监控与管理

nvitop完全指南:一站式GPU资源监控与管理

【免费下载链接】nvitop An interactive NVIDIA-GPU process viewer and beyond, the one-stop solution for GPU process management. 【免费下载链接】nvitop 项目地址: https://gitcode.com/gh_mirrors/nv/nvitop

nvitop是一款功能强大的交互式NVIDIA GPU进程查看器,为GPU进程管理提供了一站式解决方案。它不仅能够实时监控GPU设备状态,还提供了丰富的进程管理功能,让GPU资源管理变得更加高效便捷。

核心特性

nvitop拥有多项卓越特性,使其在众多GPU监控工具中脱颖而出:

  • 信息丰富且美观的输出:相比nvidia-smi显示更多信息,并使用彩色精美框线绘制
  • 监控模式:可作为资源监控器持续运行,而非仅一次性打印结果
    • 条形图和历史图表
    • 进程排序功能
    • 进程过滤机制
    • 一键向进程发送信号
    • GPU进程及其父进程的树状视图
    • 环境变量查看界面
    • 帮助屏幕
    • 鼠标支持
  • 交互式体验:在监控模式下对用户输入(键盘和/或鼠标)做出响应
  • 高效性能
    • 直接使用NVML Python绑定查询设备状态,而非解析nvidia-smi输出
    • 支持稀疏查询并使用TTLCache缓存结果
    • 使用curses库而非带ANSI转义码的print来显示信息
    • 使用多线程异步收集信息,更快响应用户输入
  • 跨平台支持:在Linux和Windows系统上均可运行
  • 易于集成:可轻松集成到其他应用中,功能远超监控范畴

系统要求

使用nvitop需要满足以下基本要求:

  • Python 3.8+
  • NVIDIA Management Library (NVML)
  • nvidia-ml-py
  • psutil
  • curses(附带libncursesw

安装方法

快速安装方式

推荐在隔离的虚拟环境中安装nvitop,可通过以下方式快速安装并运行:

uvx nvitop
# 或
pipx run nvitop

您还可以将此命令设置为shell启动文件中的别名:

# Bash用户
echo 'alias nvitop="uvx nvitop"' >> ~/.bashrc

# Zsh用户  
echo 'alias nvitop="uvx nvitop"' >> ~/.zshrc

# Fish用户
mkdir -p ~/.config/fish
echo 'alias nvitop="uvx nvitop"' >> ~/.config/fish/config.fish

# PowerShell用户
New-Item -Path (Split-Path -Parent -Path $PROFILE.CurrentUserAllHosts) -ItemType Directory -Force
'Function nvitop { uvx nvitop @Args }' >> $PROFILE.CurrentUserAllHosts

标准安装方式

从PyPI安装:

pip3 install --upgrade nvitop

从conda-forge安装:

conda install -c conda-forge nvitop

安装最新开发版本:

```bash
pip3 install --upgrade pip setuptools
pip3 install git+https://gitcode.com/gh_mirrors/nv/nvitop.git#egg=nvitop

或者克隆仓库并手动安装:

git clone --depth=1 https://gitcode.com/gh_mirrors/nv/nvitop.git
cd nvitop
pip3 install .

使用指南

设备与进程状态查询

查询设备与进程状态,输出类似于nvidia-smi,但信息更丰富且彩色显示:

# 查询所有设备状态
nvitop -1

# 指定查询设备(通过整数索引)
nvitop -1 -o 0 1  # 仅显示<GPU 0>和<GPU 1>

# 仅显示`CUDA_VISIBLE_DEVICES`中的设备
nvitop -1 -ov

# 仅显示具有计算上下文的GPU进程
nvitop -1 -c

当使用-1开关时,结果将仅显示一次,这种方式速度更快且资源占用更低。

资源监控模式

作为资源监控器运行:

# 监控模式(省略显示模式时,将使用`NVITOP_MONITOR_MODE`)
nvitop

# 根据终端尺寸自动配置显示模式
nvitop -m auto

# 强制显示为`full`模式
nvitop -m full

# 强制显示为`compact`模式  
nvitop -m compact

# 仅使用ASCII字符
nvitop -U

# 浅色终端适配
nvitop --light

# 彩色频谱式条形图
nvitop --colorful

命令行选项详解

nvitop支持丰富的命令行选项,通过nvitop --help可查看完整选项列表:

usage: nvitop [--help] [--version] [--once | --monitor [{auto,full,compact}]]
              [--interval SEC] [--ascii] [--colorful] [--force-color] [--light]
              [--gpu-util-thresh th1 th2] [--mem-util-thresh th1 th2]
              [--only INDEX [INDEX ...]] [--only-visible]
              [--compute] [--only-compute] [--graphics] [--only-graphics]
              [--user [USERNAME ...]] [--pid PID [PID ...]]

交互式NVIDIA GPU进程查看器。

选项:
  --help, -h            显示此帮助信息并退出。
  --version, -V         显示nvitop版本号并退出。
  --once, -1            仅报告一次查询数据。
  --monitor [{auto,full,compact}], -m [{auto,full,compact}]
                        作为资源监控器运行。持续报告查询数据并处理用户输入。
                        如果省略参数,将使用`NVITOP_MONITOR_MODE`的值。
  --interval SEC        进程状态更新间隔(秒)。(默认:2)
  --ascii, --no-unicode, -U
                        仅使用ASCII字符,适用于不支持Unicode的终端。

配色选项:
  --colorful            使用渐变颜色获得频谱式条形图。此选项仅在终端支持256色时可用。
  --force-color         即使`stdout`不是TTY终端也强制着色。
  --light               在监控模式下为浅色主题终端调整视觉效果。
  --gpu-util-thresh th1 th2
                        GPU利用率的阈值,用于确定负载强度。
                        着色规则:轻载 < th1 % <= 中等 < th2 % <= 重载。
  --mem-util-thresh th1 th2
                        GPU内存百分比的阈值,用于确定负载强度。
                        着色规则:轻载 < th1 % <= 中等 < th2 % <= 重载。

设备过滤:
  --only INDEX [INDEX ...], -o INDEX [INDEX ...]
                        仅显示指定设备,抑制选项`--only-visible`。
  --only-visible, -ov   仅显示`CUDA_VISIBLE_DEVICES`环境变量中的设备。

进程过滤:
  --compute, -c         仅显示具有计算上下文的GPU进程。(类型:'C'或'C+G')
  --only-compute, -C    仅显示完全具有计算上下文的GPU进程。(类型:仅'C')
  --graphics, -g        仅显示具有图形上下文的GPU进程。(类型:'G'或'C+G')
  --only-graphics, -G   仅显示完全具有图形上下文的GPU进程。(类型:仅'G')
  --user [USERNAME ...], -u [USERNAME ...]
                        仅显示指定用户的进程(无参数时使用`$USER`)。
  --pid PID [PID ...], -p PID [PID ...]
                        仅显示指定PID的进程。

环境变量配置

nvitop支持通过以下环境变量来配置监控模式:

环境变量名称描述有效值默认值
NVITOP_MONITOR_MODE默认显示模式auto / full / compact
plain / colorful
dark / light
auto,plain,dark
NVITOP_GPU_UTILIZATION_THRESHOLDSGPU利用率阈值10,75 , 1,9910,75
NVITOP_MEMORY_UTILIZATION_THRESHOLDSGPU内存百分比阈值10,80 , 1,9910,80

使用示例:

# 设置完整监控模式配合浅色终端调整
export NVITOP_MONITOR_MODE="full,light"
nvitop

监控模式快捷键

在监控模式下,nvitop提供了丰富的键盘快捷键:

快捷键功能
q退出并返回终端
h / ?转到帮助屏幕
a / f / c将显示模式更改为auto / full / compact
r / <C-r> / <F5>强制刷新窗口
<Up> / <Down>选择并高亮显示进程
<Left> / <Right>滚动进程的主机信息
<Home>选择第一个进程
<End>选择最后一个进程
<Space>标记/取消标记当前进程
<Esc>清除进程选择
<C-c>向选定进程发送signal.SIGINT(中断)
T向选定进程发送signal.SIGTERM(终止)
K向选定进程发送signal.SIGKILL(杀死)
e显示进程环境
t切换树状视图屏幕
<Enter>显示进程指标
, / .选择排序列
/反转排序顺序

特殊使用场景

Docker用户

构建并运行带有nvidia-container-toolkit的Docker镜像:

docker run -it --rm --runtime=nvidia --gpus=all --pid=host ghcr.io/xuehaipan/nvitop:latest

SSH用户

在SSH会话中直接运行nvitop:

ssh user@host -t nvitop
ssh user@host -t '~/.local/bin/nvitop'

项目结构

nvitop项目采用模块化设计,主要包含以下核心模块:

  • nvitop/api:提供设备管理、进程监控、主机信息等底层API接口
  • nvitop/tui:终端用户界面实现,包含屏幕管理、库函数等
  • nvitop/callbacks:为机器学习框架提供的回调函数(已弃用)

总结

nvitop作为一款功能全面的GPU资源监控工具,不仅提供了实时设备状态监控,还具备强大的进程管理能力。通过丰富的命令行选项和环境变量配置,用户可以根据自己的需求灵活调整监控行为。无论是开发人员还是系统管理员,都能从nvitop的高效监控和便捷操作中受益。

掌握nvitop的使用方法,将显著提升GPU资源管理的效率,为深度学习训练、科学计算等GPU密集型任务提供有力支持。

【免费下载链接】nvitop An interactive NVIDIA-GPU process viewer and beyond, the one-stop solution for GPU process management. 【免费下载链接】nvitop 项目地址: https://gitcode.com/gh_mirrors/nv/nvitop

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值