这篇文章最初发表在 NVIDIA 技术博客上。
在使用嵌入式系统时,Jetson modules 是非常重要的。此外,您必须根据功耗预算和计算资源来优化应用程序。为了避免性能甚至是热调节问题,监控这些资源变得非常重要。
Jetson 模组采用 GPU、CPU 和各种 AI 加速器设计,还具有高效电源管理集成电路 (PMIC)、电压调节器和功率树,可优化能效。 NVIDIA 提供多种工具和资源,可帮助您利用功率架构并优化资源使用:
- 各种电源模式
- 电源、散热和电气管理功能
- 用于监控功率和散热状态的 Jetson Power GUI
- Tegrastats,用于提供与模块相关的命令行统计数据
- JTOP
Jetson 功率模式
每个 Jetson 模块都支持多个预配置功率模式,这些模式针对特定功率预算进行了优化:10 瓦、15 瓦、30 瓦等。对于每个功率预算,在资源利用率方面都有各种可能的配置。
这些电源模式设置为 nvpmodel。您可以选择使用其中一种预配置模式,也可以创建根据您的要求调整的自定义功率模式。nvpmodel 配置支持一定数量的在线 GPU TPC、CPU、DLA 和 PVA 核心,以及一定的频率,以将模块保持在一定的功率预算内。
MAXN 模式还可用作无限制功率模式。它可为各种处理器和引擎启用最大数量的核心和时钟频率,然后可以调整这些核心和频率,以创建平衡性能和功耗的自定义功率模式。
电源、散热和电气管理功能
Jetson 提供各种电源、散热和电气管理功能:
- 时钟门控
- 电源门控
- 动态电压频率调整
- 深度睡眠 (SC7) 模式
- 空闲功率模式
有关更多信息,请参阅 Jetson Linux 开发者指南 中的 Supported Modes and Power Efficiency。
Jetson Power GUI
NVIDIA 通过 JetPack 提供了许多工具,可以帮助您管理散热和电源。其中一个工具是 Jetson Power GUI,它作为 JetPack 镜像的一部分安装。
通过使用 Jetson Power GUI,您可以监控 Jetson 主板的功率和散热状态。在主选项卡中,您可以跟踪 CPU 和 GPU 的使用情况以及设备温度。通过实时监控,您可以快速识别可能导致性能受限的任何性能瓶颈或功耗过高。
借助 Jetson Power GUI,您可以调整功率模式,从而优化性能和功耗之间的权衡。您可以根据所使用的 Jetson 主板选择预定义的功率模式之一。
借助 Power GUI 工具,您还可以在特定持续时间内将与电源相关的信息记录到日志文件中。这对于捕获和分析特定任务或特定持续时间期间的行为非常有用。例如,您可以在启动后的前 3 分钟内捕获有关 Jetson 性能的信息。
我们的 图形 ... ... 按钮提供了数据可视化功能,因此您可以绘制与电源相关的实时信息。捕获的日志文件还可用于绘制图形,帮助您更简单地可视化系统的执行情况。
图 4.通过 Jetson Power GUI 绘制的示例图形
特格拉斯塔
Tegrastats 是 NVIDIA 提供的命令行实用程序,可报告 Jetson 平台上的内存和处理器使用情况。此实用程序随 JetPack 一起提供,可以在/core/utils/tegrastats*.*
Tegrastats 可帮助您深入了解 CPU、GPU 和内存等多个使用指标。此外,您还可以监控功耗并实时更新功耗。这些指标对于了解系统性能至关重要。
Tegrastats 还提供有关热行为的信息,例如 CPU 和 GPU 的工作温度。这可以帮助您防止热调节。
用途
要在 Jetson 上使用 Tegrastats 实用程序,请使用以下命令。
在前台运行以下命令:
sql
$ tegrastats ---interval <int>
在此命令中,是日志打印之间的间隔(以毫秒为单位)。默认情况下,Tegrastats 每秒更新一次统计数据。
在后台运行以下命令:
sql
$ tegrastats ---interval <int> -logfile <out_file> &
在此命令中,<out_file>是 Tegrastats 将日志打印写入的输出文件的路径名。
以下是 Tegrastats 打印样本:
ruby
RAM 1545/31919MB (lfb 7400x4MB) SWAP 0/15959MB (cached 0MB) CPU
[0%@1190,0%@1190,0%@1190,0%@1190,0%@1190,0%@1190,0%@1190,0%@1190]
EMC_FREQ 1%@408 GR3D_FREQ 0%@318 VIC_FREQ 0%@115 APE 150 MTS fg 0% bg 0%
AO@38C GPU@39.5C Tdiode@43.25C PMIC@100C AUX@38.5C CPU@39.5C
thermal@38.8C Tboard@39C GPU 0/0 CPU 468/468 SOC 937/937 CV 0/0 VDDRQ
312/234 SYS5V 1458/1458
Tegrastats 还可以集成到脚本或应用程序中,以捕获系统统计数据,从而实现更多自动化场景。
JTOP (Jetson 统计)
JTOP 是一种用户友好型方式,用于监控和控制 Jetson 上的资源。它可以帮助您可视化和理解应用程序中的各种瓶颈。例如,它显示应用程序是否占用大量内存操作,或者应用程序未使用 Jetson 模块中的硬件加速引擎。通过这种方式,JTOP 可实现针对 Jetson 模块优化的更高效、更精简的应用程序。
JTOP 专为监控和管理 NVIDIA Jetson 模组而设计:
- NVIDIA Orin
- NVIDIA Xavier
- NVIDIA Nano
- NVIDIA TX
它提供有关系统性能的实时更新,使您能够分析 CPU 和 GPU 的使用情况、工作温度、内存使用情况和其他相关信息。
借助 JTOP,可以在 GUI 中访问这些信息,以更好地可视化信息。这样,它就提供了一种跟踪系统指标和性能数据的便捷方法,尤其是在运行繁重的 AI 工作负载时。
JTOP 还提供了调整系统性能的功能。您可以选择希望 Jetson 设备在其中运行的电源模式,以及控制风扇转速。这有助于优化系统性能和散热。
JTOP 对于在功率预算的情况下构建系统特别有用,但仍然会占用尽可能高的性能。要安装它,请使用点:
ruby
$ sudo apt update
$ sudo apt-get install python3-pip
$ sudo pip install -u jetson-stats
使用桌面命令:
ruby
$ jtop
JTOP 工具还可用作具有 API 的 Python 库,使您能够在脚本中轻松包含 JTOP 函数。
python
from jtop import jtop
with jtop() as jetson:
while jetson.ok():
#read jetson stats
print(jetson.stats)
有关更多信息,请观看以下 JetsonHacks 视频。
视频 1.JTOP:Jetson 专业人士使用的工具。你用了吗?
立即开始优化您的功率
我们的 NVIDIA Jetson 平台 不断提高机器人和边缘 AI 的边缘推理性能。在大多数边缘 AI 应用程序中,遵循功率预算是一个重要因素。借助 NVIDIA 工具,您可以监控系统性能并对自定义功率配置文件进行建模。
有关更多信息,请参阅以下资源:
- [Supported Modes and Power Efficiency](docs.nvidia.com/jetson/arch..." \l "supported-modes-and-power-efficiency)
- JTOP (jetson-stats) 用户指南
- Troubleshooting(Jetson_stats)
- /rbonghi/ros_jetson_stats GitHub 库
- NVIDIA-AI-IOT/ros2_jetson_stats GitHub 库
借助本文中提到的所有工具,您可以轻松为应用创建节能高效且性能优化的系统。