Savepearlharbor, ще одна копія Хабора, сторінка 4441

Savepearlharbor, ще одна копія Хабора, сторінка 4441
Народна мудрість гласить: «Один розум добре, а два краще». Вона справедлива не тільки для життєвих ситуацій, а й в справах налагодження додатків. Об'єднуючи «уми» різних програмних засобів, можна отримати не тільки кількісні, але і якісні переваги. Наприклад, союз Android Logcat і VTune Amplifier - це якраз такий випадок.

Як зіставити повідомлення з Logcat з тимчасовою шкалою VTune Amplifier? Це дасть розробникам можливість бачити повідомлення з Logcat спільно з відомостями про продуктивності з тимчасової шкали VTune Amplifier. Як результат - можна буде дізнатися, що саме сталося в конкретний час і тут же зрозуміти, яке навантаження на систему зробило ту чи іншу подію, як воно вплинуло на продуктивність.

Intel VTune Amplifier здатний обробляти і інтегрувати в власні набори даних, отримані за допомогою його вбудованих інструментів, додаткові відомості про продуктивність. Вони можуть бути отримані за допомогою зовнішніх збирачів даних або засобами тестованого програми. Для того щоб додати в VTune Amplifier зовнішні дані, потрібен CSV-файл, що володіє певною структурою, в якому знаходяться зібрані відомості. Цей файл, для подальшої роботи з ним, треба завантажити в VTune Amplifier.

Подробиці про створення власних CSV-файлів з даними можна знайти в керівництві користувача VTune Amplifier. Зокрема, в розділі VTune Amplifier> User's Guide> External Data Import є відомості про те, як створювати такі файли. Є там і приклади їх внутрішньої структури. Для того щоб повідомлення з Logcat виявилися на часовій шкалі VTune, потрібно, слідуючи керівництву, перетворити їх в CSV-файл і завантажити отриманий файл в VTune Amplifier.

Розглянемо приклад. Є додаток «com.example.Thread1». У ньому є функція, в якій виконуються важкі обчислення. Ось як вона, в загальних рисах, виглядає:

Зверніть увагу на те, що перед профілюванням Android-додатки за допомогою VTune Amplifier, додаток потрібно підготувати. А саме, в його файлі AndroidManifest.xml, в розділі . повинна бути включена можливість налагодження:

Встановити debug-версію додатка на Android-пристрій можна, наприклад, за допомогою стандартних засобів Android Studio. А після установки програми Android Studio потрібно буде закрити, інакше VTune Amplifier не зможе зібрати дані. Для того щоб поєднати збір Logcat-повідомлень і профілювання в VTune Amplifier, Logcat знадобиться запустити з командного рядка. Універсальний засіб, що підходить і тим, хто працює в Windows, і тим - хто користується Linux - це оболонка bash.

За замовчуванням, якщо ми, наприклад, запустимо Logcat командою «$ adb logcat -v threadtime», дані будуть виводитися на екран. Набагато зручніше перенаправити висновок в зовнішній файл. Робиться це такою командою:

Ми перенаправляємо висновок від Logcat в файл log.txt, який буде поміщений в поточній директорії.
Починати збір Logcat-даних потрібно до запуску профілювання в VTune Amplifier, а зупиняти (Ctrl + C в командному рядку) - після.

Повернемося до нашого прикладу. Судячи з тимчасової шкалою VTune Amplifier, яка показана нижче, функція була виконана 6 разів. ID головного потоку додатки - 12271. Коричневі стовпці - це відомості про продуктивність (процесорний час), які були зібрані в ході профілювання за допомогою VTune Amplifier.

При кожному виконанні функції, якщо збирати Logcat-повідомлення командою виду «logcat -v threadtime», ми отримаємо набір даних, показаний нижче.

Отримавши ці дані, ми можемо конвертувати їх в CSV-файл відповідного формату, який підходить для завантаження в VTune Amplifier. Відповідно до документації до VTune Amplifier, потрібний нам CSV-файл може виглядати так:

Тут, як стовпці даних «name», використовується тег, який застосовувався при логування, і рядок повідомлення. Час повідомлення потрапляє в стовпці start_tsc.UTC і end_tsc. ID процесу та ID потоку представлені в CSV-файлі, відповідно, як pid і tid. Поля розділені комами.

Тепер потрібно перейти в VTune Amplifier і виконати команду Analysis Type> Import from CSV, вибравши для імпорту щойно створений файл з даними. Додаток завантажить дані і відобразить повідомлення з Logcat на часовій шкалі з відомостями про продуктивність. На малюнку нижче показано, як переміщення миші до маленького жовтого трикутника, який вказує на точку розташування повідомлення, виводить спливаюче вікно з даними з Logcat, які були згенеровані нашим додатком.

Ось кілька порад, які стосуються створення CSV-файлів.

допоміжний скрипт

Ми створили експериментальний bash-скрипт (logcat2vtune.sh), який дозволяє спростити вищеописані дії. Ви можете скористатися ним для того, щоб автоматизувати збір Logcat-даних і створення CSV-файлу. Скрипт може збирати повідомлення, які виводять в Logcat додатки, а так само - повідомлення від ядра системи. Крім того, він зчитує відомості про цільовій системі, розбирає результати логування і автоматично генерує CSV-файли.

Для того щоб скористатися цим скриптом, вам знадобиться bash-оточення. Як було сказано вище, в Linux-системах це стандартна робоче середовище, а в Windows можна скористатися, наприклад, Cygwin.
Для того щоб отримати CSV-файл з даними в ході профілювання за допомогою VTune Amplifier, потрібно зробити наступне:

Ось кілька типових прикладів використання скрипта.

Ця команда дозволяє зібрати дані Logcat, відібрати повідомлення з рядком «MYTEST» і згенерувати CSV-файл. Дані Logcat скрипт збирає за допомогою наступної команди:

За допомогою такої команди можна зібрати повідомлення від «dmesg», відфільтрувати їх по рядку «MYDRIVER» і створити CSV-файл.

В даному випадку на шкалі часу можна буде отримувати повідомлення з vmlinux з TID 0 і логи призначеного для користувача рівня з Logcat з TID тисячу дев'ятсот двадцять дві.

Для того щоб дізнатися подробиці про роботу зі скриптом, скористайтеся командою «logcat2vtune.sh -h».

При бажанні, ви можете налаштувати скрипт під власні потреби. Будь ласка, враховуйте, що «logcat2vtune.sh» - це експериментальний проект, він не пройшов всеосяжного тестування. Якщо при роботі з ним виявляться будь-які проблеми - ви можете повідомити про це нам.

Скориставшись інструментами і прийомами роботи, описаними вище, ви можете вивести профілювання і налагодження Android-додатків на більш високий рівень, поєднавши інформацію з Android Logcat з даними про продуктивність з VTune Amplifier. Сподіваємося, це допоможе вашим додаткам підкорити нові вершини продуктивності і економічності.