NVTOP
什么是NVTOP?
NVTOP 是 Neat Videocard TOP 的缩写,是一个类似于 (h)top 的 GPU 和加速器任务监视器。它可以处理多个 GPU 并以类似 htop 的方式显示它们的信息。
目前支持的供应商包括 AMD(Linux amdgpu 驱动)、Apple(有限的 M1 和 M2 支持)、华为(Ascend)、Intel(Linux i915 驱动)、NVIDIA(Linux 专有驱动)、高通 Adreno(Linux MSM 驱动)。
一图胜千言:
目录
NVTOP 选项和交互命令
交互式设置窗口
NVTOP 内置了一个设置工具,可以根据您的需求定制界面。
只需按下 F2
并选择最适合您的选项。
保存偏好设置
您可以通过按 F12
来保存在设置窗口中设置的偏好。
下次运行 nvtop
时将加载这些偏好设置。
NVTOP 手册和命令行选项
NVTOP 附带了一个手册页!
man nvtop
快速查看命令行参数帮助
nvtop -h
nvtop --help
GPU 支持
AMD
NVTOP 通过暴露的 DRM 和 sysfs 接口支持使用 amdgpu
驱动的 AMD GPU。
AMD 在内核 5.14 中引入了 fdinfo 接口(浏览内核源码)。 因此,您需要内核版本大于或等于 5.14 才能看到使用 AMD GPU 的进程。
对最新 GPU 的支持会定期合并到 Linux 内核主线中,所以请为您的 GPU 使用足够新的内核。
Intel
NVTOP 支持使用 i915
Linux 驱动的 Intel GPU。
Intel 在内核 5.19 中引入了 fdinfo 接口(浏览内核源码)。 因此,您需要内核版本大于或等于 5.19 才能看到使用 Intel GPU 的进程。
Intel 支持状态
- Intel 正在努力通过
HWMON
接口暴露更多硬件信息。补丁仍在进行中:查看补丁系列。 - fdinfo 接口不会暴露进程分配的内存。因此,进程列表中的内存字段为空。
NVIDIA
NVML 库不支持 Kepler 微架构之前的某些 GPU 查询。从 GeForce 600、GeForce 800M 及其后续产品开始的任何产品都应该可以正常工作。有关支持的 GPU 的更多信息,请查看 NVML 文档。
Adreno
NVTOP 支持使用 msm
Linux 驱动的 Adreno GPU。
msm 在内核 6.0 中引入了 fdinfo 接口(浏览内核源码)。 因此,您需要内核版本大于或等于 6.0 才能看到使用 Adreno GPU 的进程。
Apple
NVTOP 包含了一些使用 Metal 的 Apple 初步支持。这仅在为 Apple 构建时才支持,而且在为 Apple 构建时只支持这个供应商。
Apple 支持状态
- Apple 支持仍在开发中。可能存在一些 bug 和限制。
Ascend
NVTOP 通过 DCMI API(版本 6.0.0)支持 Ascend(在 Atlas 800(910B)上测试)。
目前,DCMI 仅支持有限的 API,缺少 PCIe 代数、收发吞吐量信息、最大功耗等。
构建
NVTOP 需要几个库来显示 GPU 信息:
- ncurses 库驱动用户界面。
- 这使屏幕看起来很漂亮。
- 对于 NVIDIA:随 GPU 驱动提供的 NVIDIA 管理库(NVML)。
- 这用于查询 GPU 信息。
- 对于 AMD:用于通过内核驱动查询 AMD GPU 的 libdrm 库。
特定发行版安装过程
Ubuntu / Debian
如果您的发行版提供 snap 工具,请按照 snap 安装过程 获取最新版本的 nvtop
。
还提供了一个独立的 AppImage 应用程序。
Ubuntu Impish (21.10)、Debian buster(稳定版)及更新版本
-
sudo apt install nvtop
Ubuntu PPA
Martin Wimpress 提供了一个 支持 Ubuntu 20.04、22.04 及更新版本的 PPA,提供最新版本的 nvtop
,支持 NVIDIA、AMD 和 Intel。
sudo add-apt-repository ppa:flexiondotorg/nvtop
sudo apt install nvtop
较旧版本
-
AMD 和 Intel 依赖
sudo apt install libdrm-dev libsystemd-dev # Ubuntu 18.04 sudo apt install libudev-dev
-
NVIDIA 依赖
- NVIDIA 驱动(参见 Ubuntu Wiki 或 Ubuntu PPA 或 Debian Wiki)
-
NVTOP 依赖
-
CMake、ncurses 和 Git
sudo apt install cmake libncurses5-dev libncursesw5-dev git
- NVTOP
- 按照 NVTOP 构建 进行操作
Fedora / Red Hat / CentOS
提供了一个独立的 AppImage 应用程序。
Fedora 36 及更新版本
-
sudo dnf install nvtop
Red Hat Enterprise Linux 8 和 9
-
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %{rhel}).noarch.rpm sudo dnf install nvtop
CentOS Stream、Rocky Linux、AlmaLinux
-
sudo dnf install -y epel-release sudo dnf install nvtop
Fedora / Red Hat / CentOS 的构建过程:
-
AMD 和 Intel 依赖项
sudo dnf install libdrm-devel systemd-devel
-
NVIDIA 依赖项
- NVIDIA 驱动,需要 CUDA 以支持 nvml 库(参见 RPM Fusion)
-
NVTOP 依赖项
-
CMake、ncurses、C++ 和 Git
sudo dnf install cmake ncurses-devel git gcc-c++
- NVTOP
- 按照 NVTOP 构建 步骤进行
OpenSUSE
可以使用独立的 AppImage 应用程序。
OpenSUSE 的构建过程:
-
AMD 依赖项
sudo zypper install libdrm-devel
-
NVIDIA 依赖项
- NVIDIA 驱动(参见 SUSE 支持数据库)
-
NVTOP 依赖项
- CMake、ncurses 和 Git
sudo zypper install cmake ncurses-devel git
- CMake、ncurses 和 Git
-
NVTOP
- 按照 NVTOP 构建 步骤进行
Arch Linux
-
sudo pacman -S nvtop
Gentoo
-
sudo layman -a guru && sudo emerge -av nvtop
AppImage
AppImage 是一个独立的应用程序。只需下载 AppImage,赋予执行权限并运行即可!
-
前往 发布页面 下载
nvtop-x86_64.AppImage
-
# 进入下载位置 ** 路径可能因系统而异 ** cd $HOME/Downloads # 赋予 AppImage 执行权限 chmod u+x nvtop-x86_64.AppImage # 运行 nvtop ./nvtop-x86_64.AppImage
如果你对其工作原理感兴趣,请访问 AppImage 网站。
Snap
-
snap install nvtop # 添加在 nvtop 内终止进程的功能 snap connect nvtop:process-control # 添加检查 GPU 信息(风扇、PCIe、功耗等)的功能 snap connect nvtop:hardware-observe # AMDGPU 进程列表支持(读取 /proc/<pid>) snap connect nvtop:system-observe # 临时解决方案,获取每个进程的 GPU 使用情况(读取 /proc/<pid>/fdinfo) snap connect nvtop:kubernetes-support
注意:connect 命令允许
Docker
-
NVIDIA 驱动(同上)
-
git clone https://github.com/Syllo/nvtop.git && cd nvtop sudo docker build --tag nvtop . sudo docker run -it --rm --runtime=nvidia --gpus=all --pid=host nvtop
NVTOP 构建
git clone https://github.com/Syllo/nvtop.git
mkdir -p nvtop/build && cd nvtop/build
cmake .. -DNVIDIA_SUPPORT=ON -DAMDGPU_SUPPORT=ON -DINTEL_SUPPORT=ON
make
# 全局安装到系统
sudo make install
# 或者,在没有特权的情况下安装到指定位置
# make DESTDIR="/your/install/path" install
如果你使用 conda 作为环境管理器,在构建 NVTOP 时遇到错误,请在调用 cmake
之前尝试 conda deactivate
。
构建系统支持多种构建类型(例如 -DCMAKE_BUILD_TYPE=RelWithDebInfo):
- Release:无调试信息的二进制文件
- RelWithDebInfo:带调试信息的二进制文件
- Debug:使用警告标志和地址/未定义行为检测器编译(用于开发目的)
故障排除
- 图表显示异常:
- 确认你安装了宽字符版本的 ncurses 库(Debian / Ubuntu 上为 libncursesw5-dev),清理构建目录并重新开始构建过程。
- Putty:告诉 putty 不要隐瞒其功能(
$TERM
),在菜单Connection > Data > Terminal Details
中将Terminal-type string
字段设置为putty
。
许可证
NVTOP 使用 GPLv3 许可证或任何更新版本。 你可以在仓库的 COPYING 文件中或 GNU 网站 <www.gnu.org/licenses/> 找到许可证副本。