SoCWatch 简介
英特尔® SoC Watch 是一款命令行工具,用以在基于英特尔® 架构的平台上监控与能 耗相关的系统行为。 它可监控电源状态、频率、总线行为、唤醒次数和其他不同指标, 从而提供有关系统能效的洞察。
数据收集后,目标系统中默认生成汇总文件和原始数据。 原始数据 (sw1) 可导入至 英特尔 Energy Profiler (与 VTune Amplifier 相同的 GUI),以实现长期系统行为的 关联性与可视化。 汇总文件 (csv) 可通过 Excel 打开,并将差分指标绘制成图表,以 简化分析过程。
通过 Nexus 播放器授予根权限
Nexus 播放器业已面市。 该分析工具需要通过内核驱动程序授予根权限性能数据。 您可以遵循该视频中的指导性步骤: Nexus Player – How to Root Android TV,以授予权限。 拥有根权限后,设备可识别 adb shell 中的 su 命令。
重建内核以及针对 Nexus 播放器的内核配置
Google 禁用了内核配置中的模块上传功能。 因此,我们需要从 Google 官方网站下 载内核源,并仅基于调整内核配置后的自定义配置重建该内核。
步骤 1. 从 Google 官方网站下载内核源
步骤 2. 进行内核配置时必须启动下列选项。
export ARCH=x86 make fugu_defconfig make menuconfig
- CONFIG_MODULES=y
- CONFIG_MODULE_UNLOAD=y
- CONFIG_TRACEPOINTS=y
- CONFIG_FRAME_POINTER=y
- CONFIG_COMPAT=y
- CONFIG_TIMER_STATS=y
- CONFIG_X86_ACPI_CPUFREQ=m (or CONFIG_X86_ACPI_CPUFREQ=y)
- CONFIG_INTEL_IDLE=y
步骤 3. 构建内核后,内核文件应位于路径 < INSTALLATION_DIR_PATH > \x86_64\arch\x86\boot\bzImage 下
make –j4
步骤 4. 通过预先构建的内核构建启动映像
就英特尔平台设备而言,有时仅闪存内核部分可能会失败。 因此,我们需要借助预先 构建的内核构建一个启动映像。 为此,我们可将预先构建的内核放入 Android 源代码树 内,并且仅构建启动映像。
为了快速解决问题,我们使用 unpack/repack 启动映像脚本构建启动映像,即 Android Image Kitchen。 首先,您从 Googl e developers下载出厂映像。 使用 unpackimg.bat 提取 boot.img 后,用您之前 构建的 bzImage 替换 < INSTALLATION_DIR_PATH >\split_img\boot.img-zImage 。 最后,使用 repackimg.bat 重新打包新的 boot.img。
注: 如果设备由于闪存结构错误而无法重启,您可以拔掉电源,再重新插上,并长按 硬按钮,使设备以快速启动模式运行。 然后,使用出厂映像(从 Google developers 下 载)中包含的 flash-all.bat 脚本闪存所有映像,并恢复设备。
步骤 5. 将新的 boot.img 闪存至设备。
adb reboot bootloader fastboot flash boot boot.img fastboot reboot
现在,您可以查看内核版本,确认闪存是否成功。 如果闪存成功,我们可以开始基于 构建该内核源的 SoCWatch 驱动程序。
构建 SoCWatch 驱动程序
驱动程序源包含在 SoCWatch 软件包内,软件包下载地址为 Intel® System Studio。 SoCWatch 是构成英特尔® System Studio 的组件。
步骤 1. 通过构建驱动程序脚本在 < INSTALLATION_DIR_PATH > \soc_perf_driver\src\ 中构建 socperf1_2.ko
sh ./build-driver
步骤 2. 通过构建驱动程序脚本在 < INSTALLATION_DIR_PATH > \socwatch_driver\lxkernel\ 中构建 SOCWATCH1_5.ko
sh ./build-driver –k <KERNEl_BUILD_DIR> -s <KERNEl_BUILD_DIR>
设置 SoCWatch 环境
通过 adb 根命令授予根权限后,您可以执行安装文件 (socwatch_android_install.bat)。 但是,我们无法简单以默认为 root 的模式运行 adb。 在这种情况下,我们逐步设置 SoCWatch 环境。
第一步,导航至 SoCWatch 目录,将所需文件拷贝至设备。 就该设备而言,我们只需 将文件推送至 sdcard 位置,然后拷贝至 /data/socwatch
tools\os2unix.exe setup_socwatch_env.sh tools\dos2unix.exe SOCWatchConfig.txt adb push socwatch /sdcard/socwatch/ adb push setup_socwatch_env.sh /sdcard/socwatch/ adb push libs /sdcard/socwatch/libs/ adb push valleyview_soc /sdcard/socwatch/valleyview_soc/ adb push tangier_soc /sdcard/socwatch/tangier_soc/ adb push anniedale_soc /sdcard/socwatch/anniedale_soc/ adb push socperf1_2.ko /sdcard/socwatch/ adb push SOCWATCH1_5.ko /sdcard/socwatch/ adb shell su cp –r /sdcard/socwatch /data/ cd /data/socwatch chmod 766 socwatch
最后,您可参考用户指南(见附件),了解有关数据收集的说明。 数据收集完成并获 取输出数据后,您可以提取结果文件,并通过主机系统内收集的性能数据拥有目标系统洞 察/分析。