65.9K
CodeProject 正在变化。 阅读更多。
Home

开始使用Intel® Energy Profiler for Android

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2015 年 5 月 1 日

CPOL

11分钟阅读

viewsIcon

9034

本指南将介绍如何在 Windows 主机上安装的 Intel® System Studio 中包含的工具,在 Android 设备上进行能耗分析。

Intel® Developer Zone 提供跨平台应用开发的工具和操作指南信息、平台和技术信息、代码示例以及同行专业知识,帮助开发者创新并取得成功。加入我们的社区,获取 Android物联网Intel® RealSense™ 技术Windows 的相关内容,下载工具、获取开发套件、与志同道合的开发者交流想法,并参与黑客松、竞赛、路演和本地活动。

开始提升您的功耗和能耗管理能力

Intel® VTune™ Amplifier for Systems 可帮助您通过Intel® Energy Profiler 分析来优化代码在 Linux* 嵌入式平台、Android* 或 Windows* 系统上的功耗管理。通过分析功耗,可以识别浪费能源的行为,从而显著延长设备的电池续航时间。

监控不同的硬件睡眠状态,包括硬件从睡眠状态唤醒的原因。探索 CPU 频率以分析系统上的功耗问题。并进行结果的可视化比较,快速量化和展示改进。

使用 Intel Energy Profiler 进行功耗分析

  • 监控不同的硬件睡眠状态,包括唤醒源
  • 探索 CPU 频率以分析功耗问题
  • 进行结果的可视化比较,以快速量化和展示改进
  • 适用于多个目标系统
    • Windows* 目标
    • Linux* 目标
    • Android* 目标

目录

  1. 本次演练使用的宿主机和目标机

  2. 检查驱动程序

  3. 安装应用程序

  4. 运行采集

  5. 结果可视化

  6. 结果解读

  7. 额外资源

  8. 法律声明

本次演练使用的宿主机和目标机

本指南将介绍如何在 Windows 主机上安装的 Intel® System Studio 中包含的工具,在 Android 设备上进行能耗分析。将包含一些关于在 Linux 主机上运行时的一些细微差别的额外文本。假设 Mac* 主机类似,但作者无法直接访问 Mac* 主机来验证这一声明的准确性。屏幕截图来自 Windows 主机。

检查驱动程序

Intel Energy Profiler for Android 设备有几个组成部分。首先是内核级别的 Android 驱动程序,它们需要系统级权限,如果这些驱动程序是与 Android 内核一起构建并在设备上预先存在的,那么正确的权限是最容易处理的。然后是低级别的应用程序,它与这些驱动程序接口,并包含用于数据采集的命令行界面,这通常称为 Intel SoC Watch 收集器,因为命令名为 socwatch,并且可以通过 ADB 脚本轻松安装。最后是可视化组件,它集成到 Intel VTune Amplifier GUI 中。可以使用 Intel SoC Watch 命令行收集能耗分析数据,并手动处理结果,而无需使用 Intel VTune Amplifier 中提供的 GUI 界面。这就是为什么该工具的大部分文献只提及“Intel SoC Watch”分析工具而不是 Intel Energy Profiler。

要检查驱动程序是否已存在于您的目标设备上,以及需要哪个版本的收集工具,只需打开 adb shell 并检查 /lib/modules//system/lib/modules/ 目录是否包含 SOCWATCHx_x.ko 驱动程序。

如上所示,本示例中的设备已经在系统镜像中包含了 /lib/modules/SOCWATCH1_3.ko 驱动程序,因此本示例将使用 Intel SoC Watch 收集器版本 1.3 命令行进行数据采集。如果找到的驱动程序是 SOCWATCH1_5.ko,则将使用版本 1.5 的数据收集器。注意:Android Lollipop* 镜像很可能在 /system/lib/modules 目录中。

警告

如果驱动程序不存在于系统中,则需要进行构建,这超出了本文的范围。用户指南“构建内核模块”部分提供了一些说明。特别需要注意的是,驱动程序需要与系统内核具有相同的安全签名,或者能够以其他方式为驱动程序提供系统级权限。

安装数据收集应用程序

现在我们已经通过检查设备上的驱动程序确定了要使用的数据收集器版本,我们还需要将该版本的数据收集应用程序安装到设备上。注意:每个设备只需要执行一次此操作。

找到 Intel System Studio 安装中包含的 system_studio_target.tgz 文件。该文件应位于 <ISS_install_dir>/Targets,其中 <ISS_install_dir> 是您的 System Studio 安装的位置。通常在 Windows 主机上是“C:\Program Files (x86)\Intel\System Studio yyyy.x.xxx”,在 Linux 主机上是“/opt/intel/system_studio_yyyy.x.xxx”,其中 yyyy.x.xxx 是您特定安装的版本号。此 tgz 文件包含 Windows 或 Linux 主机所需的文件。将文件(包括目录)解压到您的系统中一个您可以稍后找到的位置。在本示例和截图中,我将其放置在此处:“C:\Users\Public\ISS-2015_SoCWatch”。

从命令行提示符导航到您刚刚解压的目录,该目录应与设备上先前确定的 Intel SoC Watch 驱动程序版本匹配。在本示例中:C:\Users\Public\ISS-2015_SoCWatch\system\studio\target\socwatch_android_v1.3d\

注意: 此目录将包含用户指南,其中包含大量可能有用的信息。包括但不限于对正在使用的收集器特定版本的所有可用选项的描述、有关如何分析结果的信息,甚至是一个快速入门指南,其中介绍了本文档中的大部分内容。

在设备仍然通过 USB 连接的情况下,运行安装脚本。在 Windows 上运行 socwatch_android_install.bat 批处理文件,在 Linux 上运行 socwatch_android_install.sh shell 脚本。如果您已经在设备上执行过一次,则会收到通知并且不会执行任何操作,因此如果您不小心安装了错误的版本,则需要 adb shell 进入设备并删除 /data/socwatch 目录,然后才能再次运行。否则,您将看到正在复制到设备的文件列表。

运行采集

最简单的能耗数据采集包括三个步骤:设置环境、加载驱动程序和运行采集脚本。

设置环境

每次连接新的 ADB shell 到设备进行数据采集时,都需要完成此步骤。

通过 ADB shell 连接到设备,然后更改目录到 /data/socwatch 目录。在那里您将找到 setup_socwatch_env.sh 脚本。运行该脚本,以便将环境变量传播到当前 shell。您会注意到它会提醒您加载驱动程序,这是下一步。要么

source ./setup_socwatch_env.sh
or
. ./setup_socwatch_env.sh

加载驱动程序

每次设备启动后,在进行数据采集之前,都需要完成此步骤。不一定每次连接新的 adb shell 都需要。

在此,您使用 insmod 命令将上一节“检查驱动程序”中找到的驱动程序加载到设备的活动内存中。在本示例中,找到的驱动程序是 /lib/modules/SOCWATCH1_3.ko,因此加载的就是这个驱动程序。您可以通过使用 lsmod 命令列出已加载的驱动程序来仔细检查驱动程序是否已加载。某些版本的 socwatch 可能还需要加载其他驱动程序,例如 socperf_xxx.ko 驱动程序,这将由 set_socwatch_env.sh 脚本的输出进行澄清。

insmod /lib/modules/SOCWATCHx_y.ko

运行采集脚本

每次需要新的数据文件进行分析时,都会运行此步骤。确切的参数将取决于收集器的版本、相关硬件支持的功能以及为分析收集的信息。许多这些参数可以通过 --help 选项得到至少一点的解释。下面是一个命令行示例,它收集核心 cstates 和 pstates 的数据,在开始采集前等待 5 秒,总共采集 30 秒,并将结果输出到 /data/socwatch/results/ 目录,文件名前缀为 GSG_examplerun

./socwatch --max-detail -f cpu -s 5 -t 30 -o ./results/GSG_examplerun

注意: USB 线连接到设备很可能会影响功耗状态,因此通常在发出采集命令后、采集开始前断开电缆。这可以通过后台任务和 nohup 来完成,例如“nohup ./socwatch <options> &”然后断开电缆。

注意: 通常希望仅在特定应用程序执行期间收集数据,这可以通过 socwatch 命令的“-p”开关来实现,有关更多信息,请参阅 --help 文档和用户指南。

在 VTune™ Amplifier 中可视化结果:

将结果导入 Intel VTune Amplifier 有两个步骤:首先,将结果文件从设备中导出,然后将其导入分析器。

将结果从设备导出

回到主机设备的命令提示符,导航到一个可以存储一些数据文件的目录。建议不要直接使用 Intel VTune Amplifier 项目目录,因为将其导入项目会自动将其复制到项目目录中,而是使用一个简单的临时目录。尝试跳过此步骤并直接通过设备名称/内部存储/数据路径导航到文件,由于各种权限相关原因,这不一定有效。从您的临时目录通过 adb pull 获取结果文件,如果无法轻松记住特定的文件名,可以通过“adb shell ls /data/socwatch/results”列出它们。

adb pull /data/socwatch/results/GSG_examplerun.csv
adb pull /data/socwatch/results/GSG_examplerun.sw1

在 VTune™ 中导入以进行分析

此步骤只需要从设备导出的 sw1 文件。csv(逗号分隔值)文件是提供给您的自定义分析脚本或其他娱乐用途的结果文本文件。

启动 Intel VTune Amplifier 应用程序并加载您感兴趣的项目。如果您不熟悉如何执行此操作,请参阅 Intel VTune Amplifier for Systems 入门文章或类似文章。从“欢迎”选项卡中,单击“导入结果...”链接。或者,从“新分析”选项卡中,为分析类型选择“能耗分析”,然后单击“导入数据”。

注意: 此方法仅适用于 Intel System Studio 2015 Update 1 及更高版本。如果使用 Intel System Studio 的早期版本,可能需要运行命令行分析器工具来导入数据。

这两种情况都将进入“导入文件并创建结果”选项卡,您可以在其中浏览从设备导出的 sw1 文件并选择它进行导入。

单击导入,然后观看它被分析和显示以供数据审查!

结果解读

可用的具体信息高度依赖于硬件、收集器版本和采集时使用的命令行选项。加载结果后,平台功耗分析视图应为默认视图(通常也是唯一选项),并应显示摘要选项卡屏幕。摘要选项卡将显示一些有用的信息,例如运行的 elapsed time 和可用核心时间(通常是可用核心数乘以 elapsed time),以及每秒每核的唤醒事件,以及有关活动核心频率和唤醒事件原因的一些信息。这是在使用以下命令行运行期间,设备处于低功耗状态(屏幕关闭但 USB 线仍连接)的示例。正如预期的那样,结果表明设备处于非常低的功耗状态。

./socwatch --max-detail -f cpu -f device -f sys -t 30 -s 5 –o ./results/idleasleep

另一个有用的选项卡是“关联指标”,它将显示包含各种状态和事件信息的时序图。可以很容易地放大到特定感兴趣的时间范围并调查不同事件的时序。请注意,将鼠标悬停在数据上通常会弹出更多信息,如下所示。

可能感兴趣的是,可以在同一个窗口中比较两个结果,这允许轻松比较在相似条件下运行的两个不同运行,以查找预期的改进或结果的可重复性。要执行此操作,请先单独导入两个结果,然后关闭它们的分析选项卡。此时建议在项目导航器窗口中重命名结果以便于引用,但这并非必需。然后单击“比较结果”图标 并识别要比较的两个结果。然后分析器将并排显示两个结果进行比较。下面是一些比较运行不同基准测试的两个运行的示例屏幕截图。

附加信息

在线资源

精选文章

法律信息

Intel、VTune 和 Intel 标识是 Intel Corporation 在美国和/或其他国家/地区的商标。

* 其他名称和品牌可能被声明为他人财产。

Microsoft、Windows 和 Windows 标识是 Microsoft Corporation 在美国和/或其他国家/地区的商标或注册商标。

提供到非 Intel 网站的链接仅供方便之用,不对该网站或其内容作出任何责任或准确性/功能性保证。

版权所有 © 2015-2016,Intel Corporation。保留所有权利。

© . All rights reserved.