Польза от оптимизации энергопотребления Android-приложений, которые рассчитаны на мобильные устройства, видна невооружённым взглядом. Меньше потребление энергии – дольше время между перезарядками. Но у энергопотребления есть и другие стороны. Стационарное «железо», вроде Nexus Player, тоже нуждается в экономичных приложениях. В глобальном масштабе, а платформа Android – это явление именно такого размаха, бережное отношение к энергии означает заботу об окружающей среде.
Intel SoC Watch – это инструмент командной строки, который позволяет анализировать энергопотребление систем, основанных на платформах от Intel. Nexus Player – одна из таких систем. Для того чтобы узнать с помощью SoCWatch о том, что творится «под капотом» Nexus Player, устройство нужно особым образом подготовить.
Intel SoC Watch умеет собирать сведения о состояниях энергопотребления микропроцессоров и о причинах переключения между этими состояниями, отслеживать изменения тактовой частоты, использование шин, и множество других показателей. Всё это помогает детально проанализировать параметры потребления энергии различными системами.
После сбора информации SoCWatch, по умолчанию, генерирует файлы, содержащие необработанные данные и отчёт с общими сведениями по целевой системе. Необработанные данные (они хранятся в файле формата .SW1) можно импортировать в Intel Energy Profiler. Это средство имеет такой же интерфейс, как VTune Amplifier. Здесь можно сопоставлять и визуализировать данные о поведении системы, развёрнутые во времени. Файл отчёта (в формате .CSV) можно открыть, например, в Microsoft Excel и, на основе содержащихся в нём данных, построить графики, которые позволят облегчить анализ.
Nexus Player уже появился в продаже. Подробности о работе с ним, освещённые на Intel Developer Forum 2015, вы можете найти в материале IDF2015 Lab Notes: Getting your Nexus Player from shrink-wrap to Performance and Energy Analysis.
Для того чтобы Nexus Player можно было анализировать с помощью SoCWatch, потребуются дополнительные усилия. Так, аналитической системе нужны root-права для сбора данных о производительности с помощью драйвера уровня ядра. Для того чтобы получить такие права, вы можете воспользоваться видео-руководством Nexus Player – How to Root Android TV. После того, как root-права получены, устройство сможет воспринимать команду su в оболочке ADB.
Google отключила функцию загрузки модулей в конфигурации ядра ОС устройства. Поэтому, для подготовки Nexus Player к работе с SoCWatch, нам необходимо загрузить исходный код ядра с официального сайта Google и, модифицировав его конфигурацию, пересобрать. Для того чтобы это сделать, нужно выполнить следующие шаги.
1. Загрузим исходный код ядра с официального сайта Google.
2. Изменим конфигурацию ядра таким образом, чтобы она содержала следующие настройки, которые включают необходимые нам возможности:
3. Убедимся, что перестроенное ядро можно найти по адресу < INSTALLATION_DIR_PATH >\x86_64\arch\x86\boot\bzImage
4. Создадим загрузочный образ с предварительно собранным ядром. В случае с устройствами, построенными на платформе Intel, иногда, если перепрошивать только раздел ядра, можно потерпеть неудачу. Поэтому мы создадим загрузочный образ с только что построенным ядром, настроенным так, как нам нужно. Для этой цели мы можем поместить ядро внутрь дерева исходного кода Android и построить только загрузочный образ.
Для того чтобы собрать загрузочный образ, мы пользуемся средством для работы с образами Android Image Kitchen. Оно, в частности, позволяет распаковывать и упаковывать образы. Для начала загрузим заводской образ с портала Google Developers. После этого воспользуемся файлом unpackimg.bat для распаковки образа и заменим файл < INSTALLATION_DIR_PATH >\split_img\boot.img-zImage на файл bzImage, который мы создали на предыдущем шаге. В завершение данного шага воспользуемся пакетным файлом repacking.bat для создания нового boot.img
Обратите внимание на то, что если устройство не может перезагрузиться после неудачной перепрошивки, оживить его можно следующим образом. Отключите кабель питания, немного подождите, подключите кабель, после чего нажмите и удерживайте аппаратную кнопку, которая расположена на нижней грани устройства. Nexus Player войдёт в режим fastboot. После этого воспользуйтесь скриптом flash-all.bat, который можно найти среди файлов, загруженных вместе с заводским образом с сайта Google Developers. Он перепрошьёт устройство и вернёт ему работоспособность.
5. Прошьём новый boot.img на устройство с помощью следующих команд:
Теперь можно проверить версию ядра для того, чтобы понять, удалась ли перепрошивка. Если удалась, то можно собирать драйвер SoCWatch.
Исходный код драйвера входит в состав пакета SocWatch, который можно загрузить вместе с Intel System Studio. SoCWatch – это один из компонентов Intel System Studio. Для сборки драйвера воспользуемся такой последовательностью действий:
1. Выполним сборку socperf1_2.ko с помощью скрипта для сборки драйвера в < INSTALLATION_DIR_PATH >\soc_perf_driver\src\
2. Выполним сборку SOCWATCH1_5.ko с помощью скрипта для сборки драйвера в < INSTALLATION_DIR_PATH >\socwatch_driver\lxkernel\
Можно запустить установочный файл (socwatch_android_install.bat) с помощью команды adb root после того, как на устройстве получены root-права. Однако, для того, чтобы эта команда успешно сработала, могут понадобиться некоторые дополнительные настройки. Поэтому мы рассмотрим здесь универсальную процедуру подготовки окружения SoCWatch, основанную на использовании команды su.
Для начала нужно перейти в папку SoCWatch и скопировать необходимые файлы на устройство. В нашем случае мы можем отправить эти файлы на SD-карту, а затем скопировать их в директорию /data/socwatch. Делается это так:
Теперь вы можете, воспользовавшись Руководством пользователя по SoCWatch, приступить к сбору данных. Собрав данные, остаётся лишь загрузить полученные файлы с устройства на главный компьютер и приступить к анализу сведений о производительности и энергопотреблении Nexus Player.
Сбор данных с помощью SoCWatch
Если вы разрабатываете приложения, ориентированные на Nexus Player, то сейчас вы знаете, как сделать мир лучше. Достаточно проанализировать энергопотребление своих разработок с помощью Intel SoC Watch и исправить то, что «ест» неоправданно много электричества.
Intel SoC Watch – это инструмент командной строки, который позволяет анализировать энергопотребление систем, основанных на платформах от Intel. Nexus Player – одна из таких систем. Для того чтобы узнать с помощью SoCWatch о том, что творится «под капотом» Nexus Player, устройство нужно особым образом подготовить.
Общие сведения о SoCWatch
Intel SoC Watch умеет собирать сведения о состояниях энергопотребления микропроцессоров и о причинах переключения между этими состояниями, отслеживать изменения тактовой частоты, использование шин, и множество других показателей. Всё это помогает детально проанализировать параметры потребления энергии различными системами.
После сбора информации SoCWatch, по умолчанию, генерирует файлы, содержащие необработанные данные и отчёт с общими сведениями по целевой системе. Необработанные данные (они хранятся в файле формата .SW1) можно импортировать в Intel Energy Profiler. Это средство имеет такой же интерфейс, как VTune Amplifier. Здесь можно сопоставлять и визуализировать данные о поведении системы, развёрнутые во времени. Файл отчёта (в формате .CSV) можно открыть, например, в Microsoft Excel и, на основе содержащихся в нём данных, построить графики, которые позволят облегчить анализ.
Получение root-прав на Nexus player
Nexus Player уже появился в продаже. Подробности о работе с ним, освещённые на Intel Developer Forum 2015, вы можете найти в материале IDF2015 Lab Notes: Getting your Nexus Player from shrink-wrap to Performance and Energy Analysis.
Для того чтобы Nexus Player можно было анализировать с помощью SoCWatch, потребуются дополнительные усилия. Так, аналитической системе нужны root-права для сбора данных о производительности с помощью драйвера уровня ядра. Для того чтобы получить такие права, вы можете воспользоваться видео-руководством Nexus Player – How to Root Android TV. После того, как root-права получены, устройство сможет воспринимать команду su в оболочке ADB.
Построение ядра с новой конфигурацией для Nexus Player
Google отключила функцию загрузки модулей в конфигурации ядра ОС устройства. Поэтому, для подготовки Nexus Player к работе с SoCWatch, нам необходимо загрузить исходный код ядра с официального сайта 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. Создадим загрузочный образ с предварительно собранным ядром. В случае с устройствами, построенными на платформе Intel, иногда, если перепрошивать только раздел ядра, можно потерпеть неудачу. Поэтому мы создадим загрузочный образ с только что построенным ядром, настроенным так, как нам нужно. Для этой цели мы можем поместить ядро внутрь дерева исходного кода Android и построить только загрузочный образ.
Для того чтобы собрать загрузочный образ, мы пользуемся средством для работы с образами Android Image Kitchen. Оно, в частности, позволяет распаковывать и упаковывать образы. Для начала загрузим заводской образ с портала Google Developers. После этого воспользуемся файлом unpackimg.bat для распаковки образа и заменим файл < INSTALLATION_DIR_PATH >\split_img\boot.img-zImage на файл bzImage, который мы создали на предыдущем шаге. В завершение данного шага воспользуемся пакетным файлом repacking.bat для создания нового boot.img
Обратите внимание на то, что если устройство не может перезагрузиться после неудачной перепрошивки, оживить его можно следующим образом. Отключите кабель питания, немного подождите, подключите кабель, после чего нажмите и удерживайте аппаратную кнопку, которая расположена на нижней грани устройства. Nexus Player войдёт в режим fastboot. После этого воспользуйтесь скриптом flash-all.bat, который можно найти среди файлов, загруженных вместе с заводским образом с сайта Google Developers. Он перепрошьёт устройство и вернёт ему работоспособность.
5. Прошьём новый boot.img на устройство с помощью следующих команд:
adb reboot bootloader
fastboot flash boot boot.img
fastboot reboot
Теперь можно проверить версию ядра для того, чтобы понять, удалась ли перепрошивка. Если удалась, то можно собирать драйвер SoCWatch.
Сборка драйвера SoCWatch
Исходный код драйвера входит в состав пакета SocWatch, который можно загрузить вместе с Intel System Studio. SoCWatch – это один из компонентов Intel System Studio. Для сборки драйвера воспользуемся такой последовательностью действий:
1. Выполним сборку socperf1_2.ko с помощью скрипта для сборки драйвера в < INSTALLATION_DIR_PATH >\soc_perf_driver\src\
sh ./build-driver
2. Выполним сборку SOCWATCH1_5.ko с помощью скрипта для сборки драйвера в < INSTALLATION_DIR_PATH >\socwatch_driver\lxkernel\
sh ./build-driver –k <KERNEl_BUILD_DIR> -s <KERNEl_BUILD_DIR>
Настройка окружения SoCWatch
Можно запустить установочный файл (socwatch_android_install.bat) с помощью команды adb root после того, как на устройстве получены root-права. Однако, для того, чтобы эта команда успешно сработала, могут понадобиться некоторые дополнительные настройки. Поэтому мы рассмотрим здесь универсальную процедуру подготовки окружения SoCWatch, основанную на использовании команды su.
Для начала нужно перейти в папку SoCWatch и скопировать необходимые файлы на устройство. В нашем случае мы можем отправить эти файлы на SD-карту, а затем скопировать их в директорию /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
Теперь вы можете, воспользовавшись Руководством пользователя по SoCWatch, приступить к сбору данных. Собрав данные, остаётся лишь загрузить полученные файлы с устройства на главный компьютер и приступить к анализу сведений о производительности и энергопотреблении Nexus Player.
Сбор данных с помощью SoCWatch
Итоги
Если вы разрабатываете приложения, ориентированные на Nexus Player, то сейчас вы знаете, как сделать мир лучше. Достаточно проанализировать энергопотребление своих разработок с помощью Intel SoC Watch и исправить то, что «ест» неоправданно много электричества.