不用烦恼,NVIDIA Jetson 功耗优化3分钟速成

2023-10-17 14:55:36 浏览数 (2)

当你与嵌入式系统(就像Jetson模块)打交道时,你就得按照你的功耗预算和计算资源来优化你的应用。要避免性能问题甚至是“发烫停滞”问题,监控这些资源变得异常重要。

Jetson模块可不是一般的玩意儿!它们内置GPU、CPU和各种AI加速器。此外,还有高效的功耗管理集成电路(PMIC)、电压调节器和电源树( power tree),以实现功耗的极致优化。NVIDIA还提供了一系列工具和资源,可助你充分发挥这个“强大电源系统”的威力,并最大程度地优化你的资源利用率:

  • 各种各样的电源模式
  • 电源、热量和电气管理功能
  • Jetson Power GUI,用于监控电源和热量状态
  • Tegrastats,提供有关模块的命令行统计数据
  • 还有JTOP(Jetson高级性能优化工具)等等。

Jetson电源模式

每个Jetson模块都支持多个预配置的电源模式,专为特定的功耗预算进行了优化:10瓦、15瓦、30瓦,以及等等。对于每个功耗预算,可以在资源利用方面进行各种不同的配置。

这些电源模式是使用nvpmodel进行设置的,您可以选择使用其中一个预配置的模式,也可以创建一个根据您的需求进行调优的自定义电源模式。nvpmodel配置允许一定数量的在线GPU TPC、CPU、DLA和PVA核心,以及一定的频率,以使模块保持在特定的功耗预算内。

注意:MAXN模式是一种不受限制的电源模式,允许CPU、GPU、DLA、PVA和SOC引擎(如NVENC、NVDEC等)的最大核心数和时钟频率。但它并不保证在所有用例中都能获得最佳性能,因为当总模块功耗超出TDP预算时,硬件会进行限制。因此,它不是最高性能模式。这是一种用于微调时钟设置以创建平衡性能和功耗的自定义电源模式的实验性模式。

Jetson电源管理

Jetson提供了各种电源、热量和电气管理功能:

  • 时钟门控
  • 电源门控
  • 动态电压频率调节
  • 深度休眠(SC7)模式
  • 待机电源模式

更多详细信息,请参阅Jetson Linux开发者指南中的《支持的模式和功耗效率》

(https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html#supported-modes-and-power-efficiency)

以Jetson Orin NANO开发套件为例:

Jetson Power GUI:让你的Jetson板变身智能电力侦探!

NVIDIA为JetPack提供了许多工具,可助您进行热量和电源管理。其中一个神器就是Jetson Power GUI,它随JetPack镜像一起安装。

Jetson Power GUI可以让您监控Jetson板的电源和热量状态。在“Main”上,您可以跟踪CPU和GPU的使用情况,还能查看设备温度。通过实时监控,您可以快速识别任何可能导致性能限制的性能瓶颈或过度功耗。

借助Jetson Power GUI,您可以调整电源模式,优化性能和功耗之间的权衡。您可以根据使用的Jetson板选择预定义的电源模式之一。

该电源GUI工具还允许您将相关的电源信息记录到日志文件中,以特定持续时间为单位。这对于捕获和分析特定任务或特定时间段的行为非常有用。例如,您可以在启动后的前3分钟内捕获Jetson性能的信息。

"绘制图表"按钮提供数据可视化功能,因此您可以绘制实时的与电源相关的信息。捕获的日志文件还可用于绘制图表,以帮助您更简单地可视化系统的性能表现。Jetson Power GUI,让电力管理变得轻松有趣!

Tegrastats:Jetson平台的内存与处理器专属管理师

Tegrastats是NVIDIA提供的命令行实用工具,用于报告Jetson平台上的内存和处理器使用情况。这个工具随JetPack一起提供,并位于<top>/core/utils/tegrastats目录下。

Tegrastats提供了有关多个使用指标的见解,如CPU、GPU和内存。它还可以监控功耗,并实时更新电力使用情况。这些指标对于了解系统的性能至关重要。

Tegrastats还提供了关于热行为的信息,比如CPU和GPU的操作温度。这有助于您避免热量限制,就像一个专业的'热量管理师'一样。

要在Jetson上使用Tegrastats实用工具,请使用以下命令。

在前台运行以下命令:

代码语言:javascript复制
$ tegrastats —interval <int>

在这个命令中,<int>是记录打印之间的时间间隔,以毫秒为单位。默认情况下,Tegrastats每秒更新一次统计信息。

在后台运行以下命令:

代码语言:javascript复制
$ tegrastats —interval <int> -logfile <out_file> &

在这个命令中,<out_file>是Tegrastats写入日志打印的输出文件的路径名。

以下是Tegrastats的示例打印:

代码语言:javascript复制
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-stats):让Jetson成为你的应用'健康管家'!"

JTOP是一个用户友好的工具,用来监控和控制Jetson上的资源。它可以帮助你可视化和了解应用程序中的各种瓶颈。例如,它可以显示一个应用程序是否对内存操作负荷较重,或者一个应用程序是否没有使用Jetson模块中的硬件加速引擎。这样,JTOP可以带来更高效、更流畅的应用程序,经过了Jetson模块的优化。

屏幕截图显示了JTOP界面,您可以在其中可视化设备的功耗和资源消耗的当前状态。图5. JTOP启动界面

JTOP专为监控和管理NVIDIA Jetson模块而设计:

  • NVIDIA Orin
  • NVIDIA Xavier
  • NVIDIA Nano
  • NVIDIA TX

它提供有关系统性能的实时更新。这使您可以分析CPU和GPU使用率、操作温度、内存使用率以及其他相关信息。

通过JTOP,可以以图形用户界面的方式访问这些信息,更好地可视化这些信息。这种方式提供了一种便捷的方法,用于跟踪系统的指标和性能数据,特别是在运行大型AI工作负载时。

JTOP还提供了调整系统性能的能力。您可以选择Jetson设备的电源模式以及对风扇速度进行控制。这有助于优化系统性能和温度。Jetson与JTOP,性能掌握在你手!

NVIDIA Jetson平台不断推动机器人和边缘AI的推理性能。在大多数边缘AI应用中,遵循功耗预算是至关重要的。借助NVIDIA的工具,你可以监控系统性能,还可以打造一个专属的“功耗”档案。就是这么酷!

好了,你在給Jetson板子刷机的时候也是这样么?

0 人点赞