命令行工具
rbonghi/jetson_stats avatar
rbonghi/jetson_stats

jetson-stats:用 jtop 和 Python API 掌控你的 NVIDIA Jetson 开发板

用于监视和控制 NVIDIA Jetson [Orin、Xavier、Nano、TX] 系列的简单软件包。

2,624 个 Star330 个 ForkPythonAGPL-3.0

秒懂

它是什么?
jetson-stats 是一个面向 NVIDIA Jetson 系列开发板的监控与控制工具,提供终端界面 jtop 和可导入的 Python 库。本文基于其 README 和仓库信息,分析它的安装方式、工作原理、适用场景与限制。
适合谁用?
jetson-stats 适合需要在 Jetson 设备上进行实时监控或开发自动化控制脚本的工程师,尤其是那些希望避免手动读取 /sys 或 /proc 文件的人。它不适合需要图形化仪表盘或远程 Web 界面的场景,因为 jtop 是终端界面,且 Python API 需要你自己处理数据展示。
能商用吗?
可以,但条件严格。AGPL-3.0 是网络 copyleft 许可证:如果别人通过网络使用你修改过的版本(例如作为托管服务),你必须以同一许可证向他们提供源代码。
还在维护吗?
在维护。仓库最近一次提交在 7 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题:Jetson 上的监控碎片化

NVIDIA Jetson 开发板与普通 x86 电脑不同,它的 CPU、GPU、内存和风扇状态分散在多个系统文件里,比如 /sys/devices/system/cpu 下的频率节点,或者 /proc 中的一些统计。想拼出一个完整画面,你得自己写脚本去读取这些路径。jetson-stats 把这一层封装起来,提供一个统一的接口。它能解码硬件型号、架构、L4T 版本和 Jetpack 版本,还能监控 CPU、GPU、内存、引擎和风扇。更重要的是,它允许你控制 NVP 模型、风扇转速和 jetson_clocks。这个包面向的是需要频繁调试或部署 Jetson 应用的开发者,尤其是机器人、边缘计算和嵌入式视觉领域的工程师。

jtop 终端界面:打开即用的监控台

安装完成后,在终端输入 jtop 就会启动一个交互式界面。这个界面不需要超级用户权限,这是它的一大卖点。你可以在一个终端里看到 CPU 每个核心的占用率、GPU 的实时频率、内存使用量、引擎负载和风扇转速。它还支持通过按键切换页面,查看更详细的信息。根据 README,jtop 的更多能力在文档页面有说明。对于经常用 SSH 登录开发板的用户来说,jtop 比开一堆浏览器标签页要轻量得多。它直接跑在终端里,不依赖图形环境,这在无头设备上尤其方便。

Python 库:把监控集成到你的脚本里

除了终端界面,jetson-stats 还提供 Python 库。文档给出了一个基本用法:用 jtop() 创建上下文管理器,然后在 while jetson.ok() 循环里读取 jetson.stats 字典。这个 stats 字典包含各种实时数据,你可以打印出来,也可以写入日志或发送到远程服务器。关键点是 jetson.ok() 会返回适当的更新频率,这意味着你不需要自己控制轮询间隔。这个库的设计让监控逻辑可以嵌入到现有 Python 应用中,比如机器人控制循环或数据采集脚本。它还支持在 virtualenv 中使用,说明它不强制系统级安装。

安装方式:有坑也有捷径

安装 jetson-stats 主要有四种方式。最简单的是用 pip 安装,但需要超级用户权限:sudo pip3 install -U jetson-stats。如果你从 GitHub 直接装,可以用 sudo pip3 install git+https://github.com/rbonghi/jetson_stats.git。对于 Ubuntu 24.04,由于 PEP 668 的限制,你需要加 --break-system-packages 参数。还有一种是专门为 Jetson AGX Thor Dev Kit 准备的脚本,它会安装 jtop 并配置成不需要 sudo 就能运行。这个脚本是通过 curl 从 GitHub 拉取的,执行前你应该检查它的内容。升级 jtop 也有专门的脚本,叫 upgrade-jtop.sh。这些安装方式表明,项目对不同的系统环境做了适配,但同时也意味着安装过程并非总是 pip install 一条命令搞定。

Docker 支持:容器内的监控方案

jetson-stats 支持在 Docker 容器中运行,但有一个前提:你必须在宿主机上先安装 jetson-stats。然后,在容器里也装上同样的包,最后把宿主机的 /run/jtop.sock 挂载到容器的相同路径。文档给出的命令是:docker run --rm -it -v /run/jtop.sock:/run/jtop.sock rbonghi/jetson_stats:latest。这个机制说明 jtop 的通信是通过 Unix socket 进行的,而不是直接读取硬件文件。这样设计的好处是,容器内的进程不需要直接访问硬件,只需通过 socket 与宿主机的 jetson-stats 服务通信。但这也意味着,如果你在容器里使用,必须保证宿主机和容器的 jetson-stats 版本兼容,否则 socket 协议可能不匹配。

限制与失败模式:不是万能的

jetson-stats 有明显的适用边界。首先,它只支持 NVIDIA Jetson 系列,包括 Thor、Orin、Xavier、Nano 和 TX,但如果你用的是其他 ARM 开发板,比如树莓派,它完全无用。其次,虽然 README 说“不需要超级用户”,但前提是你通过特定脚本安装,否则 pip 安装本身就需要 sudo。另外,监控数据是实时采样的,它不会保存历史数据,所以如果你想做长期趋势分析,得自己写代码把 jetson.stats 的数据落库。还有一个潜在问题:当你通过 jtop 控制风扇转速或 NVP 模型时,如果操作不当,可能导致设备过热或性能下降。文档有 troubleshooting 页面,但 README 没有详细说明这些风险,所以你需要谨慎。

替代方案:nvidia-smi 与系统工具对比

如果你只需要 GPU 的利用率,NVIDIA 自带的 nvidia-smi 命令就能提供,而且它不需要安装任何额外包。但 nvidia-smi 只显示 GPU 信息,不覆盖 CPU、内存、风扇或引擎状态。另一个选择是使用系统自带的 top 或 htop,它们能显示 CPU 和内存,但不知道 GPU 频率或 NVP 模型。jetson-stats 的独特之处在于它把这些信息整合到一个界面里,并且提供了控制接口。如果你只是临时看一眼,nvidia-smi 和 top 足够;但如果你需要写一个自动化脚本,根据 GPU 负载动态调整风扇转速,jetson-stats 的 Python API 就比解析 nvidia-smi 的输出要省事得多。

维护与许可证:AGPL-3.0 的影响

从仓库信息看,jetson-stats 最近一次推送是 2026 年 8 月,版本 7.2.1 在同一天发布,说明项目处于活跃维护状态。版本 7.2.0 在 7 月发布,7.1.5 在 3 月发布,迭代节奏大约是一个月到几个月一次。这意味着你可以期待 bug 修复和新的硬件支持。许可证是 AGPL-3.0,这是一个强 copyleft 许可证。如果你在自己的项目里导入 jtop 库,并且你的项目通过网络提供服务,那么你可能需要开源你的整个项目。这不是法律建议,但你应该在采用前咨询你的法务。对于内部工具或非分发场景,影响可能较小,但如果你计划发布闭源商业产品,这个许可证可能是个问题。

编辑结论

jetson-stats 适合需要在 Jetson 设备上进行实时监控或开发自动化控制脚本的工程师,尤其是那些希望避免手动读取 /sys 或 /proc 文件的人。它不适合需要图形化仪表盘或远程 Web 界面的场景,因为 jtop 是终端界面,且 Python API 需要你自己处理数据展示。在采用前,先确认你的 Jetpack 版本与 Jetson 型号是否在支持列表中,并检查 AGPL-3.0 许可证对你项目的影响。若你只是偶尔想看一眼 CPU 占用,直接用 nvidia-smi 或系统自带的 top 可能更简单。但如果你需要持续监控风扇、GPU 频率或 NVP 模型,jetson-stats 是目前最直接的方案。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记