Что нового в системной трассировке Android Studio

Somethingtoldme
NOP::Nuances of Programming
5 min readAug 16, 2020

В Android Studio 4.0 мы пересмотрели UI профайлера (Profiler), чтобы обеспечить интуитивно понятный рабочий процесс записи работы центрального процессора. Мы продолжали вносить улучшения, основываясь на ваших отзывах, и добавили больше функций в версию 4.1.

Мы расскажем о том, что нового появилось в Android Studio для системной трассировки (System Trace), одной из редко используемых, но мощных конфигураций записи работы ЦП. В отличие от метода Java или трассировки функций C/C++, системная трассировка накапливает действия устройств (например, планирование работы процессора) и системные процессы Android (например, SurfaceFlinger). Кроме того, вы можете настроить код с помощью пользовательских событий, вызвав API Trace в приложении. Таким образом, ваши пользовательские события будут записываться в коллекцию вместе с системными. Они могут пригодиться, когда вы будете исследовать проблемы производительности, такие как шероховатость UI или высокое энергопотребление.

Потоки в едином представлении

Записи работы процессора теперь отделены от основной временной шкалы профайлера для облегчения анализа. В этом выделенном представлении данные трассировки организованы в разделы в левой части окна Profiler.

Системная трассировка в Android Studio 4.1 Beta 1

Вы можете перемещать разделы вверх и вниз, чтобы реорганизовать список или отдельные элементы внутри них, просто перетаскивая их.

Мы услышали, что выбор потока для просмотра его диаграммы вызовов (или событий для системной трассировки) довольно громоздок, поэтому объединили все действия потока в одно представление, отображающее его состояния и диаграммы вызовов одновременно. По умолчанию мы сортируем потоки по степени их нагруженности, но вы можете перетащить мышкой любой отдельный поток, чтобы изменить порядок.

Перетащите поток, чтобы изменить порядок списка

Вы также можете свернуть или развернуть каждый поток, щелкнув один раз значок треугольника или дважды щелкнув на его имени. Обратите внимание, что для трассировки метода Java или функции C/C++ мы сворачиваем все потоки по умолчанию из-за глубоких стеков вызовов, так что вы сразу можете взглянуть на все данные конкретного потока.

Трассировка функций C/C++, показывающая потоки, свернутые по умолчанию

События системной трассировки теперь раскрашены так, чтобы было проще увидеть отличия:

События системной трассировки

Интуитивная навигация

Новый UI трассировки имеет обновленную схему навигации по временной шкале. Мы заменили старую горизонтальную полосу прокрутки на представление master-detail.

Вверху вы увидите временную шкалу, которая отображает только продолжительность трассировки, а не весь сеанс профилирования. С помощью селектора можно быстро сузить его до определенного временного диапазона, для которого в нижеприведенных разделах отображаются подробные данные.

Используйте селектор диапазона, чтобы сфокусироваться на небольшом фрагменте временной шкалы

Оттуда вы можете выполнять более точные навигационные действия:

  • Увеличение/уменьшение масштаба с помощью Ctrl (или Cmd на Mac) + колесико мыши.
  • Панорамирование вида путем перетаскивания мышкой влево и вправо, удерживая нажатой клавишу пробела.
  • Клавиши WASD для масштабирования и панорамирования вида, как в устаревшем UI SysTrace в chrome://tracing.

Начиная с Android Studio 4.1 Canary 9, вы можете использовать мышь в разделе потоков (Threads), чтобы уточнить выбор. Можно выбрать прямоугольную область, которую можно увеличить, нажав кнопку Zoom to Selection в правом верхнем углу (клавиша “M”). Можно даже выбрать несколько потоков. Это полезно, когда вы перетаскиваете похожие потоки рядом друг с другом, проверяя все потоки сразу. Например, вы можете анализировать нескольких рабочих потоков, часто встречающихся в играх.

Выбор поля комбинированный с перетаскиванием и масштабированием

Панель анализа

Говоря об анализе, мы хотим выделить новую панель анализа (Analysis Panel), представленную в Android Studio 4.0, в правой колонке окна Profiler.

Здесь вы можете найти аналитические данные, полученные из записанной трассировки, которую вы выбрали. Если вы выбираете поток, фрейм стека или событие трассировки из левого столбца, панель анализа покажет информацию, конкретную для вашего выбора. Например, если выбран поток, отображаются его состояния, а также другая полезная информация.

Чтобы сделать эту панель анализа полезной, мы изучали способы получения полезных аналитических данных. В дополнение к Top Down, Flame Chart и Bottom Up, уже присутствующим в профайлере центрального процессора, мы добавили вкладку со сводкой (Summary) в Android Studio 4.1 Canary 10 для распределения состояния потока, статистики событий трассировки и т.д. Например, довольно часто нам нужно узнать больше о повторяющемся событии трассировки. На вкладке со сводкой отображаются основные статистические данные (количество, минимум, максимум и т. д.), а также наиболее продолжительные события выбранного события трассировки. Вы даже можете перейти к другому событию, выбрав строку таблицы.

Статистика и наиболее продолжительные события трассировки

Повышение стабильности и производительности

И последнее, но не менее важное: мы улучшили стабильность и производительность записи работы ЦП.

  • Исправили несколько ошибок, которые могут привести к сбоям записи.
  • Построили системную трассировку на основе Perfetto в качестве бэкенда на Android API level 28 и более поздних версиях с использованием новейших инструментов.
  • Оптимизировали код профайлера, чтобы значительно снизить потребление памяти (до 80%) при разборе записанной трассировки, что позволяет открывать и анализировать более длинные записи. Помните, что вы можете увеличить максимальный размер кучи Android Studio при работе с очень длинными трассировками.

Загрузите последнюю версию превью Android Studio 4.1, чтобы попробовать эти функции. Как и всегда, мы ценим ваши отзывы.

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен

--

--