Початок роботи з Intel Energy Profiler для Android

Якщо якесь додаток споживає більше енергії, ніж конкурентний, користувачі дуже скоро це помітять і зроблять відповідний вибір. Тому кожному розробнику життєво необхідно дбати про те, щоб його програми дбайливо ставилися до батарей планшетних ПК і смартфонів. Інструменти, що входять до складу Intel System Studio, здатні допомогти в цій важливій справі.



Огляд
Intel VTune Amplifier для спеціалізованих систем дозволяє оптимізувати енергоспоживання додатків, призначених для вбудованих платформ Linux, для операційних систем Android і Windows. Робиться це завдяки аналізу, який проводиться за допомогою Intel Energy Profiler.

Розібравшись з споживанням енергії, можна виявити сценарії роботи додатків, які даремно витрачають заряд батарей. Кінцевий результат аналізу – оптимізація коду і значне збільшення терміну життя пристрою від однієї зарядки.

Intel Energy Profiler дозволяє спостерігати за тим, як пристрій працює в режимах із зниженим енергоспоживанням і аналізувати причини виходу з цих режимів. Профілювальник здатний допомогти в дослідженні зміни тактової частоти процесора. Це теж допомагає виявити проблеми енергоспоживання системи. Крім того, підтримується візуалізація даних, яка дозволяє швидко побачити і оцінити поліпшення, проведені задля зниження енергоспоживання.

Цільова платформа і хост-система
У цьому матеріалі розглядається процес профілювання енергоспоживання на цільовій платформі Android із використанням інструментів, включених до складу Intel System Studio, встановленої на комп'ютері з Windows. В матеріал так само включені коментарі про особливості роботи з системою, яка встановлена на ОС Linux. Система, встановлена на Mac OS буде працювати подібним чином, однак, ми не проводили експерименти на Mac. Копії екрану, які є в статті, зроблені на комп'ютері з встановленою ОС Windows.

Перевірка наявності необхідних драйверів
За роботу з Android-пристроями Energy Profiler відповідають кілька компонентів.

Перший – це драйвери рівня ядра Android, яким потрібен системний рівень дозволів. Краще всього, якщо ці драйвери були зібрані разом з ядром і вже присутні на вашому пристрої. Так можна бути впевненим у тому, що вони мають необхідні дозволи.

Наступний компонент – низькорівневе програма, яка взаємодіє з драйверами. З програмою можна працювати через командний рядок. Зокрема – збирати дані з пристрою. Це додаток зазвичай називають збирачем даних Intel SoC Watch. Звернення до нього ведеться за допомогою команди socwatch, складальник можна встановити на пристрої за допомогою ADB-скрипта.

І, нарешті, компонент для візуалізації даних, який вбудований в користувальницький інтерфейс Intel VTune Amplifier. Цілком допустимо збирати дані з аналізу енергоспоживання, використовуючи Intel SoC Watch через командний рядок і обробляти отримані дані вручну без використання графічних інструментів Intel VTune Amplifier. Саме тому в багатьох роботах, присвячених оптимізації енергоспоживання, йдеться лише про «Intel SoC Watch», але не про «Intel Energy Profiler».

Для того щоб дізнатися, встановлений на пристрої, з яким ви збираєтеся працювати, потрібний драйвер, а так само те, яка версія засоби для збору даних знадобиться, потрібно відкрити adb shell і перевірити, чи є в директорії /lib/modules/ або /system/lib/modules/ файл драйвера SOCWATCHx_x.ko.


Приклад перевірки пристрою на наявність драйвера SOCWATCH

Після перевірки виявилося, що на пристрої, який ми використовуємо у цьому прикладі, драйвер вже включений в образ системи. Розташований він за адресою /lib/modules/SOCWATCH1_3.ko. Ім'я файлу драйвера дозволяє нам зрозуміти, яку версію Intel SoC Watch треба використовувати для збору даних. Це – версія 1.3.

Якщо б виявилося, що ім'я файлу виглядає як SOCWATCH1_5.ko, нам би довелося скористатися Intel SoC Watch версії 1.5. Зверніть увагу на те, що в Android Lollipop драйвер, швидше за все, буде знаходитися у теці /system/lib/modules. Однак і на цій версії Android варто перевірити обидві папки. Наприклад, на планшетному комп'ютері Asus Fonepad 8 з CPU Intel Atom Z3530, оновленому до Android 5.0, драйвер був виявлений саме в папці /lib/modules/.

Якщо потрібного драйвера не вдається знайти в системі, його потрібно включити в ядро при збірці. Це виходить за рамки цієї статті. Корисні відомості на цю тему можна знайти в посібнику користувача, в розділі «Building the Kernel Modules». Нижче ми розповімо про те, де можна знайти це керівництво. Особливу увагу слід звернути на те, щоб драйвер мав таку ж підпис, як і системне ядро, або – повинна бути можливість надати драйверу дозволу системного рівня.

Установка програми для збору даних
Зараз, коли після перевірки драйвера стало ясно, яку версію програми для збору даних потрібно використовувати, настав час встановити це додаток на свій пристрій. Зверніть увагу на те, що установку програми на кожному аналізованому пристрої потрібно виконати лише один раз.

Знайдіть файл system_studio_target.tgz. Він знаходиться в папці установки Intel System Studio. Шлях до директорії, де він розташований, може виглядати як <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 System Studio 2016, потрібний файл можна знайти за адресою «C:\Program Files (x86)\Intel_sw_development_tools\system_studio_2016.x.xxx\Targets».

За допомогою командного рядка перейдіть до однієї з щойно розпакованих папок, ім'я якої відповідає версії драйвера Intel SoC Watch, який раніше був ідентифікований на пристрої. У нашому випадку це папка «C:\Users\Public\ISS-2015_SoCWatch\system\studio\target\socwatch_android_v1.3d\».

Зверніть увагу на те, що в цій папці можна знайти Посібник користувача (User Guide), яке містить багато корисних відомостей. Зокрема, тут можна знайти описи опцій, доступних для конкретної версії збирача даних і коротке керівництво по початку роботи, яке висвітлює велику частину того, про що ми тут говоримо. У посібнику є також відомості про те, як аналізувати отримані результати.

Переконайтеся, що Android-пристрій підключено до комп'ютера по USB і запустіть інсталяційний скрипт. При роботі в Windows запустити пакетний файл socwatch_android_install.bat. В Linux вам знадобиться shell-скрипт socwatch_android_install.sh. Якщо ви вже користувалися цими скриптами, ви побачите повідомлення про те, що установка не вдалася. Тому, якщо ви випадково встановили не ту версію Android-додатки, перед установкою потрібної версії вам знадобиться видалити з пристрою папку /data/socwatch з допомогою adb shell. У разі успіху ви побачите список копійованих файлів на пристрій.


Установка збирача даних на пристрій

Збір даних
Збір даних для аналізу, у найпростішій формі цього процесу, складається з трьох кроків. Перший – налаштування оточення. Другий – завантаження драйвера. Третій – запуск скрипта, який збирає дані.

Налаштування оточення
Цей крок потрібно виконувати кожен раз, коли проводиться нове ADB-підключення до пристрою для збору даних.

Підключіться до пристрою за допомогою ADB і перейдіть в директорію /data/socwatch. Тут ви знайдете скрипт setup_socwatch_env.sh. Запустіть скрипт. В ході його роботи поточні налаштування оточення будуть показані на екрані. Крім того, серед виведених даних ви побачите нагадування про те, що потрібно завантажити драйвер, але цим ми займемося на наступному кроці. А зараз нам потрібні наступні команди:

source ./setup_socwatch_env.sh

або

. ./setup_socwatch_env.sh



Налаштування оточення для збору даних з допомогою shell-скрипта

Завантаження драйвера
Це слід робити щоразу перед збором даних, якщо пристрій перезагружалось. При цьому, якщо до підготовленого пристрою здійснюється нове підключення через оболонку ADB, драйвер не потрібно завантажувати повторно.

На даному кроці в оперативну пам'ять завантажується драйвер, виявленням якого на пристрої ми займалися вище. Робиться це за допомогою команди insmod. У нашому прикладі драйвер розташований за адресою /lib/modules/SOCWATCH1_3.ko, він присутній на пристрої і його можна завантажити для подальшої роботи. Для більшої впевненості можна перевірити ще раз, завантажений драйвер. Робиться це за допомогою команди lsmod. Ось приклад її використання:

insmod /lib/modules/SOCWATCHx_y.ko



Завантаження і підтвердження завантаження драйвера socwatch

Деякими версіями socwatch потрібно завантаження додаткового драйвера (socperf_xxx.ko). Так це чи ні, буде вказано після виконання скрипту set_socwatch_env.sh.

Запуск скрипта для збору даних
Цей крок потрібно виконувати кожен раз, коли потрібно новий файл з даними для аналізу. Точні параметри запуску будуть змінюватися в залежності від використовуваної версії збирача даних, від можливостей пристрою та від необхідного набору інформації, яку потрібно зібрати для аналізу. Отримати коротку довідку по роботі з цим інструментом можна, скориставшись опцією --help. Нижче наведено приклад запуску socwatch.

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



Запуск збору даних

Тут програма збирає інформацію про C-станах і P-станів ядра процесора, почекавши 5 секунд перед початком збору даних. Збір ведеться протягом 30 секунд. Результати виводяться в папку /data/socwatch/results/, при цьому імена файлів, що починаються з «GSG_examplerun».

Зверніть увагу на те, що підключення Android-пристрої до комп'ютера через USB-кабель, ймовірно, вплине на режим енергоспоживання пристрою. Тому кабель часто відключають відразу після запуску команди, але до початку збору даних. Це можна зробити, наприклад, за допомогою фонової задачі і команди nohup. Відповідна команда може виглядати так: «nohup ./socwatch &». Після того, як вона виконана, кабель можна відключити.

Нерідко вельми бажано, щоб дані були зібрані тільки при виконанні якогось певного додатка. Цього можна домогтися за допомогою параметра socwatch «-p». Подробиці про цей прийом можна дізнатися з керівництва користувача або застосувавши ключ --help.

Візуалізація результатів з допомогою VTune Amplifier
Для того щоб проаналізувати зібрані дані з допомогою Intel VTune Amplifier, нам знадобиться пройти ще два етапи. А саме – скопіювати файли з зібраними даними з пристрою і імпортувати їх у програму.

Копіювання файлів з пристрою
Для того щоб скопіювати файли з пристрою, потрібно за допомогою командного рядка, перейти в директорію комп'ютера, в якій ви можете зберегти ці файли. Рекомендується, щоб це була папка, відмінна від тієї, у якій зберігаються проекти Intel 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 (comma separated values) це текстовий файл з результатами, його можна використовувати як джерело даних для власних скриптів аналізу даних або інших інструментів.

Запустіть програму Intel VTune Amplifier і завантажте потрібний проект. Якщо ви не знайомі з цим продуктом, зверніться до статті Початок роботи з Intel VTune Amplifier для спеціалізованих систем або до якого-небудь схожого керівництву. На вкладці «Welcome» клацніть по посиланню «Import Result...». Можна вчинити інакше – перейти до групи «Energy Analysis», яку можна знайти в розділі «Analysis Type» на вкладці «New Analysis», і клацнути «Import Data».

Зверніть увагу на те, що вищеописані дії актуальні для Intel System Studio 2015 Оновлення 1 або пізнішої. Якщо ви користуєтеся більш ранньою версією Intel System Studio, вам може знадобитися скористатися інструментами командного рядка для імпорту даних.


Імпорт даних з вкладки Welcome


Імпорт даних з екрану вибору типу аналізу

І в тому і в іншому випадках наступним кроком буде вкладка «Import a File and Create a Result». На ній буде поле, в якому можна вказати шлях .sw1-файл, скопіювати з пристрою, який ви хочете імпортувати в додаток.


Вкладка вибору файлу для імпорту

Після того, як обраний файл, клацніть по кнопці Import і поспостерігайте за тим, як програма аналізує і виводить дані, які можна буде розглянути.

Інтерпретація результатів
Те, які саме дані будуть доступні для аналізу, сильно залежить від апаратного забезпечення тестованого пристрою, від версії збирача даних і параметрів командного рядка, використаних при зборі інформації.

При завантаженні результатів режим перегляду «Platform Power Analysis» буде вибрано за промовчанням (зазвичай, інших варіантів немає), буде показана вкладка «Summary». На цій вкладці можна знайти такі корисні відомості, як «Elapsed time», тобто – час тестування, і час роботи ядер процесора (зазвичай – це кількість ядер, помножене на час тестування). Тут же є відомості про події (подій в секунду на ядро), які призводять до виходу процесора з режиму зниженого енергоспоживання. На цій же вкладці можна виявити відомості про частоту активних ядер і про причини подій, які їх «пробуджують».

Тут показаний приклад аналізу даних, отриманих після використання такої команди:

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

Пристрій підключено до комп'ютера через USB-кабель, знаходилося в закритому режимі, екран був вимкнений. Як і очікувалося, результати вказують на те, що воно споживають дуже мало енергії.


Дані по пристрою, яке знаходилося в сплячому режимі

Ще одна корисна закладка – це «Correlate Metrics». Тут можна побачити розкладку по часу для різних станів і подій. Тут можна легко збільшити масштаб перегляду потрібного відрізка часу і досліджувати точні часові рамки подій і те, як вони співвідносяться один з одним. Крім того, зверніть увагу на те, що якщо утримувати якийсь час покажчик миші над цікавлять вас ділянкою, можна побачити спливаюче повідомлення з більш докладними відомостями. Саме цей момент показаний на наступному малюнку.


Перегляд даних на вкладці System Correlate Metrics

Якщо це потрібно, можна порівняти результати двох випробувань в одному і тому ж вікні. Наприклад, такий прийом дозволяє легко порівняти результати двох зборів даних, виконаних з однаковими умовами. Роблять це для того, щоб перевірити, чи є які-небудь поліпшення, або щоб переконатися в тому, що результати, отримані раніше, можна відтворити.

Для порівняння результатів двох випробувань спочатку потрібно окремо імпортувати в додаток обидва набору даних, потім закрити їх вкладки аналізу даних. На цьому етапі рекомендується перейменувати результати аналізу у вікні Project Navigator» для того, щоб з ними було зручніше працювати, однак, це необов'язково. Потім потрібно скористатися значком «Compare Results» і вказати, які саме результати аналізу слід порівняти. Додаток покаже обидва набору аналітичних даних в одному вікні, де їх можна порівняти. Ось приклад порівняння двох наборів даних, одержаних при виконанні різних тестів.


Порівняння результатів декількох випробувань: загальні відомості


Порівняння результатів декількох випробувань: причини виходу процесора з режиму зі зниженим енергоспоживанням

Підсумки
Ми розглянули приклад використання коштів Intel System Studio для аналізу енергоспоживання пристроїв, що працюють на платформі Android. Тепер у вас є все необхідне для того, щоб приступити до аналізу й оптимізації ваших програм.

Домашнє завдання
» Документація з Intel VTune Amplifier 2015
» Керівництва по оптимізації і підвищення продуктивності

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.