当前位置: 首页 > news >正文

保姆级教程:在CentOS 7.9上从源码编译安装nvtop 3.1.0(含CMake 3.29.7依赖安装)

在CentOS 7.9上从源码构建GPU监控神器nvtop 3.1.0的全流程指南

当你面对一台运行CentOS 7.9的老旧服务器,需要实时监控NVIDIA、AMD或Intel GPU的运行状态时,nvtop无疑是最佳选择之一。这款类似htop的工具能直观展示GPU使用率、温度、显存占用等关键指标,特别适合深度学习训练、科学计算等GPU密集型场景。本文将手把手带你解决在老旧系统上部署nvtop的所有技术难点,从高版本CMake编译到多厂商GPU支持的全套配置。

1. 环境准备与依赖安装

CentOS 7.9默认的软件仓库版本较旧,直接yum安装的CMake仅3.17版本,而nvtop 3.1.0需要CMake 3.18及以上。我们先解决这个核心矛盾。

首先更新基础包并安装编译工具链:

yum groupinstall -y "Development Tools" yum install -y epel-release

接着安装nvtop的直接依赖项:

yum install -y ncurses-devel libudev-devel systemd-devel libdrm-devel

注意:如果你需要监控NVIDIA GPU,确保已安装官方驱动;对于AMD GPU需安装ROCm;Intel GPU则需要安装intel-gpu-tools。

2. 编译安装CMake 3.29.7

在旧系统上构建新版本CMake是个经典问题。我们选择源码编译方式,将其安装到独立目录避免污染系统路径。

下载并解压CMake源码:

wget https://github.com/Kitware/CMake/releases/download/v3.29.7/cmake-3.29.7.tar.gz tar xf cmake-3.29.7.tar.gz cd cmake-3.29.7

配置编译选项时,建议指定--prefix参数到用户目录:

./configure --prefix=$HOME/.local/cmake-3.29.7

编译安装过程可能需要15-30分钟:

make -j$(nproc) make install

将CMake添加到PATH环境变量:

echo 'export PATH=$HOME/.local/cmake-3.29.7/bin:$PATH' >> ~/.bashrc source ~/.bashrc

验证版本:

cmake --version # 应输出 cmake version 3.29.7

3. 获取并编译nvtop源码

现在我们可以处理nvtop本身了。从GitHub获取3.1.0版本源码:

wget https://codeload.github.com/Syllo/nvtop/zip/refs/tags/3.1.0 -O nvtop-3.1.0.zip unzip nvtop-3.1.0.zip cd nvtop-3.1.0

创建构建目录并配置编译选项:

mkdir build && cd build cmake .. \ -DNVIDIA_SUPPORT=ON \ -DAMDGPU_SUPPORT=ON \ -DINTEL_SUPPORT=ON \ -DCMAKE_INSTALL_PREFIX=/usr/local

关键参数说明:

参数作用推荐设置
NVIDIA_SUPPORT启用NVIDIA GPU监控ON
AMDGPU_SUPPORT启用AMD GPU监控按需
INTEL_SUPPORT启用Intel GPU监控按需
CMAKE_INSTALL_PREFIX安装路径/usr/local

开始编译:

make -j$(nproc)

安装到系统目录:

sudo make install

4. 系统集成与路径配置

为了让nvtop全局可用,我们需要确保二进制文件在系统PATH中:

检查安装结果:

ls /usr/local/bin/nvtop

如果选择安装到其他位置,需要手动创建符号链接:

sudo ln -s /path/to/nvtop /usr/bin/nvtop

验证安装:

nvtop --version

5. 高级配置与使用技巧

5.1 多GPU监控配置

当系统中有多种品牌GPU时,nvtop会自动检测。但有时需要明确指定:

nvtop -d NVIDIA,AMD # 只监控NVIDIA和AMD设备

5.2 快捷键操作指南

nvtop继承了htop的操作逻辑:

  • q:退出程序
  • h:显示帮助
  • F2:进入设置菜单
  • ↑/↓:选择GPU
  • ←/→:切换监控面板

5.3 系统服务集成

如需持续监控,可创建systemd服务:

sudo tee /etc/systemd/system/nvtop-log.service <<EOF [Unit] Description=NVTOP GPU Monitoring Logger [Service] ExecStart=/bin/bash -c '/usr/bin/nvtop --delay-ms=1000 >> /var/log/gpu-monitor.log' Restart=always [Install] WantedBy=multi-user.target EOF

启用服务:

sudo systemctl enable --now nvtop-log.service

6. 常见问题排查

6.1 编译错误处理

如果遇到CMake报错,尝试清理构建目录:

cd nvtop-3.1.0/build rm -rf * cmake ..

6.2 运行时依赖缺失

错误示例:

error while loading shared libraries: libncurses.so.6

解决方法:

sudo yum install -y ncurses-compat-libs

6.3 GPU检测失败

检查设备权限:

ls -l /dev/dri/

可能需要将用户加入video组:

sudo usermod -aG video $USER

7. 性能优化建议

对于多GPU系统,调整采样间隔减少开销:

nvtop --delay-ms=2000 # 2秒刷新一次

在脚本中使用batch模式:

nvtop --batch --delay-ms=1000 | grep "GPU 0"

禁用不需要的GPU厂商支持重新编译,可减少二进制大小20-30%。例如仅需NVIDIA支持时:

cmake .. -DNVIDIA_SUPPORT=ON -DAMDGPU_SUPPORT=OFF -DINTEL_SUPPORT=OFF

8. 替代方案对比

虽然nvtop功能强大,但在某些场景下其他工具可能更合适:

工具优点缺点
nvidia-smi官方工具,无需安装功能单一,无交互界面
radeontopAMD专用,轻量级功能有限
intel_gpu_topIntel专用,详细指标仅支持Intel GPU
glances全系统监控,插件式GPU监控功能较弱

实际使用中发现,在拥有混合GPU的异构计算环境中,nvtop的跨厂商支持确实能大幅简化监控工作流。特别是在Kubernetes集群中部署时,配合适当的权限配置,可以完美监控容器内的GPU使用情况。

http://www.jsqmd.com/news/594010/

相关文章:

  • 前端CSS精讲05:Grid网格布局——现代页面最强二维布局方案
  • 你的电脑配置,可能决定了Vivado升级时IP会不会“偷懒”:一次关于IP缓存与硬件资源的观察
  • Ubuntu 20.04忘记密码?5分钟搞定root和用户密码重置(附GRUB菜单截图)
  • Avalonia实战:5分钟搞定无边框窗口自定义(附拖拽功能完整代码)
  • 学生评教|高校评教|基于SpringBoot+vue高校学生评教系统 (源码+数据库+文档)
  • 离谱又惊艳!C++隐藏宝藏库numeric_range深度探索,竟藏着JS彩蛋和隐零点
  • 常见的 HTTP 状态码有哪些:从 1xx 到 5xx 全解及排错流程图
  • 五次多项式换道轨迹规划+MPC轨迹跟踪控制simulink模型(有说明文档) 版本
  • 开发实战:asp.net core + ef core 实现动态可扩展的分页方案
  • 电力电子新手必看:SPWM单极性倍频调制在Simulink中的实现与优化
  • 告别数据孤岛:手把手教你用ArcMap的Join功能,把Excel数据精准‘贴’到地图上
  • 用AirSim和Habitat手把手教你搭建第一个无人机VLN仿真环境(避坑指南)
  • 知新研学 |AlignMamba:AlignMamba:通过局部和全局跨模态对齐增强多模态 Mamba 技术
  • HTTP 请求包含哪些内容:请求行、请求头、请求体三大结构及类型详解
  • Doris查询优化指南:PHP开发者必知的5个参数调优技巧
  • 文章标题:专业ASIC FPGA IP加密代码解密工具
  • 快至1天开通企业来电名片!高性价比号码认证服务商推荐(适配中小企业) - 企业服务推荐
  • 从Logistic曲线到疫情预测:用Python和SciPy复现SI传染病模型(附代码)
  • 连登IEEE/Elsevier一区TOP刊!PINN+强化学习新突破!
  • HTTP 2.0 与 HTTP 3.0 核心区别详解:从 TCP 到 UDP,彻底解决队头阻塞
  • **基于ARKit的增强现实手势交互开发实战:从零构建沉浸式用户界面**
  • UG NX 合并曲面减少面得数量
  • HTTP 和 HTTPS 有什么区别:从明文传输到安全加密的完整演进
  • ollama环境变量全解析:从数据路径到端口优化的高效配置指南
  • 第25课:让 Qt 从 GPIO 子系统一路进阶到平台驱动与设备树控制
  • 智能电池充电:使用PID控制器优化SOC附Matlab代码
  • 保姆级教程:用MS-Swift在本地电脑上跑通Qwen2.5-VL多模态大模型(附WebUI界面)
  • **Rollup方案实战:基于Vite的模块化构建优化与性能提升**在现代前端工程化实践中,**构建
  • 实测对比:美信POC方案中磁珠选型的5个关键陷阱(附PSpice仿真文件)
  • AI 驱动的代码理解神器:DeepWiki 让代码库秒变交互式 Wiki