着手改进您的电源和能源管理
通过英特尔® Energy Profiler分析,面向系统的英特尔® VTune™ Amplifier 可帮助您优化 Linux* 嵌入式平台、Android* 或 Windows* 系统上的代码的电源管理。 通过功耗分析,您可以发现浪费能源的行为,从而显著延长设备的电池续航时间。
监控不同的硬件睡眠状态,包括硬件从睡眠状态中唤醒的原因。 探测 CPU 频率以分析您系统的功耗问题。 以可视的方式执行结果比较,快速量化和证明改进之处。
使用英特尔® Energy Profiler 执行功耗分析
- 监控不同的硬件睡眠状态,包括唤醒原因。
- 探测 CPU 频率以分析功耗问题
- 以可视的方式执行结果比较,快速量化和证明改进之处。
- 适用于多种目标系统:
- Windows* Targets
- Linux* Targets
- Android* Targets
目录:
适用于本概览的主机和目标系统
本指南介绍了如何使用英特尔® System Studio(安装到 Windows 主机)所包含的工具在 Android 目标系统上进行能源剖析。 一些其他文本还介绍了在 Linux 主机上运行时存在的细微差异。 在此假定在 Mac* 主机上运行时情况相似,但作者并没有使用 Mac* 主机来直接证实该声明的真实性。 屏幕截图截自 Windows 主机。
检查驱动程序:
面向 Android 目标系统的英特尔 Energy Profiler 具有多个组件。 其中包括需要系统级许可的内核级 Android 驱动程序,如果这些驱动程序采用 Android 内核构建并已安装在设备上,便会很容易获得正确的许可。 还包括与这些驱动程序连接的低级别应用以及用于数据采集的命令行接口,后者通常被称为英特尔 SoC Watch 采集器,因为该命令名称是 socwatch,可通过 ADB 脚本轻松安装。 最后还包括集成到英特尔 VTune Amplifier GUI 中的可视化组件。 您可以借助英特尔 SoC Watch命令行采集能源分析数据,而且无需使用英特尔 VTune Amplifier 内的 GUI 接口,便可手动处理结果。 这就是为什么有关此工具的多数文献只提到“英特尔 SoC Watch”分析工具,而不提英特尔 Energy Profiler。
如要检查驱动程序是否已安装在您的目标设备上以及需要什么版本的采集工具,只需打开 adb shell 并检查 SOCWATCHx_x.ko 驱动程序的目录是 /lib/modules/ 还是 /system/lib/modules/。
如上所示,本示例中的设备在系统映像中已有 /lib/modules/SOCWATCH1_3.ko 驱动程序,因此本示例会使用英特尔 SoC Watch 采集器 1.3 版命令行执行数据采集。 如果发现驱动程序是 SOCWATCH1_5.ko,那就要使用 1.5 版数据采集器。 注: Android Lollipop*映像可能会将驱动程序放在 /system/lib/modules 目录中。
警告:
如果系统上不存在驱动程序,那么用户就需要进行构建,这不在本文范围之内。 用户指南中节“构建内核模块”提供了一些指导。 值得注意的是,要求驱动程序的安全签名与系统内核的相同,或能为驱动程序提供系统级许可。
安装数据采集应用:
既然我们已通过检查设备上的驱动程序确定了要使用什么版本的数据采集器,我们就需要为设备安装该版本的数据采集应用。 注: 每台设备只需安装一次。
找到您安装英特尔 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"。
从命令行提示窗口,导航至您刚解压的与英特尔 SoC Watch驱动程序版本相匹配(之前在设备上确定的)的目录。 在本示例中: C:\Users\Public\ISS-2015_SoCWatch\system\studio\target\socwatch_android_v1.3d\
注: 该目录中的用户指南包含大量有用的信息。 包括但不限于所用特定版本采集器上所有选件的描述、关于如何分析结果的信息以及涵盖了本文所涉及的大部分内容的快速启动指南。
在确保通过 USB 连接设备的同时,运行安装脚本。 对于 Windows,运行 socwatch_android_install.bat batch file;在 Linux 上运行 socwatch_android_install.sh shell script。 如果您已在该设备上执行过此步骤,您就会收到通知,并且系统不会执行任何操作;因此如果您无意中安装了错误的版本,您需要为设备添加 adb shell 并删除 /data/socwatch 目录,然后重新运行。 否则,您会看到有一系列文件正在复制到设备上。
运行采集:
用最简单的形式采集数据用于分析,这包括三个步骤:设置环境、加载驱动程序和运行采集脚本。
设置环境:
每次将一个新的 ADB shell 连接至设备用于数据采集时,就需要完成这个步骤。
通过 ADB shell 连接至设备,将目录更改为 /data/socwatch 目录。 在那里您可以找到 setup_socwatch_env.sh 脚本。 提供脚本,将环境设置传播到当前 shell。 您会注意到它提醒您加载驱动程序,这是下一个步骤。 二选一:
提供 ./setup_socwatch_env.sh 或 ./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 选项,可获得其中许多参数的基本解释。 这是一个命令行示例,它在 cstate 和 pstate 下采集数据,等待 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"开关得以实现,请参阅帮助文件和用户指南获得更多信息。
VTune™ Amplifier 中的结果可视化:
通过两个步骤可将结果导入英特尔 VTuneAmplifier,首先从设备中提取结果文件,然后将该文件导入分析器中。
从设备中提取结果:
返回主机设备上的命令提示窗口,导航至一个可存储一些数据文件的目录。 建议不要使用英特尔 VTune Amplifier 项目目录本身,因为将这些目录导入您的项目时便已自动将其复制到项目目录中了,所以可使用一个简单的临时目录。 由于各种许可原因,用户可能无法跳过该步骤并直接通过 devicename/internal storage/data 路径导航至该文件。 通过 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 (逗号分割值)文件是一个结果文本文件,供自定义分析脚本或其他用途使用。
启动英特尔 VTune Amplifier 应用,加载您感兴趣的项目。 如果您不熟悉如何执行该步骤,请参阅面向系统的英特尔® VTune™ Amplifier 入门文章或类似文章。 从 "Welcome"选项卡中点击 "Import Result..."链接。 或者从 "New Analysis tab"中选择适合分析类型的 "Energy Analysis",然后点击 "Import Data"。
注:该方法仅适用于英特尔 System Studio 2015 Update 1 或更高版本。 如果使用之前版本的英特尔 System Studio,可能需要运行命令行放大器工具才能导入数据。
Both cases will lead to the "Import a File and Create a Result" tab where you can browse to the sw1 file pulled off of your device and select it for import.
点击 "Import",系统便会分析并显示数据以供审核!
解释结果:
特定信息的可用性在很大程度上取决于硬件、采集器版本和用于采集的命令行选项。 加载结果时,平台电源分析观点应该是默认的(通常是唯一的选项),而且汇总选项卡界面应该显示出来。 汇总选项卡会显示一些有用的信息,例如运行时间和可用的内核时间(一般是可用内核数乘以运行时间),以及每内核每秒的唤醒事件和一些有关活跃内核频率和唤醒事件原因的信息。 该示例使用以下命令行启动运行,同时设备睡眠时黑屏但 USB 线缆仍保持连接。 正如所预期的,结果显示设备处于非常低的功耗状态中。
./socwatch --max-detail -f cpu -f device -f sys -t 30 -s 5 –o ./results/idleasleep
另一个有用的选项卡是 "Correlate Metrics",它会显示各种状态和事件信息的时间表。 您可以轻松放大自己特别感兴趣的时间段,调查不同事件的时间。 值得注意的是,如果将鼠标悬停在少量数据上,屏幕上会有更多的信息弹出,如下所示。
在同一窗口内比较两个结果,支持您轻松比较两个在相似条件下的不同运行,从而搜索预期改进或结果再现性。 为此,首先要分别导入两个结果,然后关闭它们的分析选项卡。 此时,建议您在 Project Navigator 窗口中为结果重命名以方便查阅,但不强制要求。 然后点击 Compare Results 图标 并确定要比较的两个结果。 分析器会显示这两个并排比较的结果。 下面的屏幕截图比较了两个运行不同性能指标测试的运行。
更多信息:
在线资源:
- 培训和文档
- 调试指南和性能分析文章
- 英特尔® 学习实验室(白皮书、文章等)
- 英特尔® 软件文档库
引用文章:
- 面向系统的英特尔® VTune™ Amplifier 入门
- 如何使用面向系统的英特尔® VTune™ Amplifier
- 如何使用面向系统的英特尔® VTune™ Amplifier 上上的远程采集
- 如何使用面向系统的英特尔® VTune™ Amplifier 中的英特尔® Energy Profiler
- 使用抽样采集器执行性能数据采集
法律信息
英特尔、VTune 和 Intel 标识是英特尔公司在美国和/或其他国家的商标。
*其他的名称和品牌可能是其他所有者的资产。
Microsoft、Windows 和 Windows 标识是微软公司在美国和/或其他国家的商标或注册商标。
与非英特尔站点的链接仅为方便起见提供,不构成对这些站点或其内容准确度或功能的任何责任或保证。
版权所有 © 2015-2016 英特尔公司。 保留所有权利。