Запись следов

Чтобы начать запись трассировки, выберите конфигурацию записи в раскрывающемся меню над или под профилировщиком ЦП и нажмите «Запись» .

Рис. 1. Профилировщик ЦП отображает состояние, продолжительность и тип выполняемой записи.

Взаимодействуйте со своим приложением, а затем нажмите «Стоп» , когда закончите. Профилировщик автоматически отображает информацию трассировки на панели трассировки, как показано на рис. 2.

Рисунок 2. Профилировщик ЦП после записи трассировки метода.

  1. Выбранный диапазон: определяет часть записанного времени для проверки на панели трассировки. Когда вы впервые записываете трассировку, профилировщик ЦП автоматически выбирает всю продолжительность вашей записи на временной шкале ЦП. Чтобы просмотреть данные трассировки только для части записанного временного диапазона, перетащите края выделенной области.
  2. Раздел «Взаимодействие». Отображает взаимодействие пользователя и события жизненного цикла приложения на временной шкале.
  3. Раздел «Потоки»: отображает активность состояния потока (например, выполнение, спящий режим и т. д.) и диаграмму вызовов (или диаграмму событий трассировки в System Trace) для каждого потока на временной шкале.
    • Используйте сочетания клавиш и мыши для перемещения по временной шкале.
    • Дважды щелкните имя цепочки или нажмите Enter, когда цепочка выбрана, чтобы развернуть или свернуть ее.
    • Выберите поток, чтобы просмотреть дополнительную информацию на панели «Анализ». Удерживайте Shift или Ctrl (Command на Mac), чтобы выбрать несколько потоков.
    • Выберите вызов метода (или отследите событие в System Trace), чтобы просмотреть дополнительную информацию на панели «Анализ».
  4. Панель анализа: отображает данные трассировки для выбранного вами диапазона времени и потока или вызова метода. На этой панели вы можете выбрать, как просматривать каждую трассировку стека (с помощью вкладок анализа) и как измерять время выполнения (с помощью раскрывающегося меню привязки времени).
  5. Вкладки панели анализа: выберите способ отображения сведений о трассировке. Подробную информацию о каждом параметре см. в разделе «Проверка трассировок» .
  6. Меню привязки времени: выберите один из следующих вариантов, чтобы определить, как измеряется информация о времени для каждого вызова (поддерживается только в методах Java Sample/Trace ):
    • Время настенных часов: информация о времени представляет собой фактическое прошедшее время.
    • Время потока: Информация о времени представляет собой фактическое затраченное время за вычетом любой части того времени, когда поток не потребляет ресурсы ЦП. Для любого данного вызова время его потока всегда меньше или равно времени его настенных часов. Использование времени потока позволяет лучше понять, какая часть фактического использования процессора потока потребляется данным методом или функцией.
  7. Фильтр: фильтрует данные трассировки по функции, методу, классу или имени пакета. Например, если вы хотите быстро идентифицировать данные трассировки, относящиеся к конкретному вызову, введите имя в поле поиска. На вкладке Пламенная диаграмма выделены стеки вызовов, включающие вызов, пакет или класс, соответствующий поисковому запросу. На вкладках «Сверху вниз» и «Снизу вверх» эти стеки вызовов имеют приоритет над другими результатами трассировки. Вы также можете включить следующие параметры, установив соответствующий флажок рядом с полем поиска:
    • Регулярное выражение: чтобы включить в поиск регулярные выражения, используйте эту опцию.
    • Учитывать регистр: если ваш поиск чувствителен к регистру, используйте эту опцию.
Совет: При просмотре временной шкалы потоков доступны следующие ярлыки:
  • Увеличение масштаба: нажмите W или прокрутите колесо мыши, удерживая клавишу Ctrl (Command на Mac).
  • Уменьшение масштаба: нажмите S или прокрутите колесо мыши назад, удерживая клавишу Ctrl (Command на Mac).
  • Панорамирование влево: нажмите A или перетащите мышь вправо, удерживая пробел.
  • Панорамирование вправо: нажмите D или перетащите мышь влево, удерживая пробел.
  • Развертывание или свертывание цепочки. Дважды щелкните имя цепочки или нажмите Enter, когда цепочка выбрана.

Выберите конфигурацию записи

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

  • Примеры методов Java: записывает стек вызовов вашего приложения через определенные промежутки времени во время выполнения кода вашего приложения на основе Java. Профилировщик сравнивает наборы собранных данных, чтобы получить информацию о времени и использовании ресурсов при выполнении кода на основе Java в вашем приложении.

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

  • Трассировка методов Java: инструментирует ваше приложение во время выполнения для записи временной метки в начале и конце каждого вызова метода. Временные метки собираются и сравниваются для создания данных трассировки метода, включая информацию о времени и использовании ЦП.

    Обратите внимание, что накладные расходы, связанные с инструментированием каждого метода, влияют на производительность во время выполнения и могут влиять на данные профилирования; это еще более заметно для методов с относительно коротким жизненным циклом. Кроме того, если ваше приложение выполняет большое количество методов за короткое время, профилировщик может быстро превысить ограничение на размер файла и не сможет записывать дальнейшие данные трассировки.

  • Примеры функций C/C++. Собирают выборочные трассировки собственных потоков вашего приложения. Чтобы использовать эту конфигурацию, необходимо развернуть приложение на устройстве под управлением Android 8.0 (уровень API 26) или выше.

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

  • Трассировка системных вызовов: собирает подробные сведения, которые позволяют вам проверить, как ваше приложение взаимодействует с системными ресурсами. Вы можете проверить точное время и продолжительность состояний ваших потоков, визуализировать узкие места вашего ЦП по всем ядрам и добавить собственные события трассировки для анализа. Такая информация может иметь решающее значение при устранении проблем с производительностью. Чтобы использовать эту конфигурацию, необходимо развернуть приложение на устройстве под управлением Android 7.0 (уровень API 24) или выше.

    Используя эту конфигурацию трассировки, вы можете визуально отмечать важные процедуры кода на временной шкале профилировщика, инструментируя свой код. Для инструментирования кода C/C++ используйте собственный API трассировки, предоставляемый trace.h . Для инструментирования кода Java используйте класс Trace . Дополнительные сведения см. в разделе Инструментирование кода вашего приложения .

    Эта конфигурация трассировки построена на systrace . Вы можете использовать утилиту командной строки systrace , чтобы указать параметры, выходящие за рамки тех, которые предусмотрены в профилировщике ЦП. Дополнительные данные системного уровня, предоставляемые systrace могут помочь вам проверить собственные системные процессы и устранить неполадки с пропущенными или задержанными кадрами.

    На устройствах под управлением Android 9 (уровень API 28) или выше вы можете использовать системное приложение под названием System Tracing для записи системных трассировок на устройстве .

Создание, редактирование или просмотр конфигурации записи

Вы создаете, редактируете и просматриваете конфигурации записи в диалоговом окне «Конфигурации записи ЦП» , которое открывается путем выбора «Редактировать конфигурации» в раскрывающемся меню конфигураций записи в верхней части профилировщика ЦП.

Чтобы просмотреть настройки существующей конфигурации записи, выберите ее на левой панели диалогового окна «Конфигурации записи ЦП» .

Чтобы создать новую конфигурацию записи, выполните следующие действия:

  1. Нажмите Добавить в верхнем левом углу диалога. При этом создается новая конфигурация с некоторыми настройками по умолчанию.
  2. Назовите свою конфигурацию.
  3. Выберите технологию трассировки .
  4. Для конфигураций выборочной записи укажите интервал выборки в микросекундах (мкс). Это значение представляет собой время между каждым образцом стека вызовов вашего приложения. Чем короче указанный вами интервал, тем быстрее вы достигнете ограничения размера файла для записанных данных.
  5. Укажите предельный размер файла в мегабайтах (МБ) для записываемых данных, записываемых на подключенное устройство. Когда вы прекращаете запись, Android Studio анализирует эти данные и отображает их в окне профилировщика. Таким образом, если вы увеличите лимит и запишете большой объем данных, Android Studio займет гораздо больше времени для анализа файла и может перестать отвечать на запросы.

    Примечание. Если вы используете подключенное устройство под управлением Android 8.0 (уровень API 26) или выше, размер файла данных трассировки не ограничен, и это значение игнорируется. Однако вам все равно нужно быть осторожным с объемом данных, которые устройство собирает после каждой записи: Android Studio может столкнуться с трудностями при анализе больших файлов трассировки. Например, если вы записываете либо выборочную трассировку с коротким интервалом выборки, либо инструментированную трассировку, в то время как ваше приложение вызывает множество методов за короткое время, вы быстро создадите большие файлы трассировки.

  6. Чтобы принять изменения и продолжить внесение изменений в другие конфигурации, нажмите «Применить» . Чтобы принять все внесенные изменения и закрыть диалоговое окно, нажмите «ОК» .

Записывайте активность ЦП с помощью API отладки.

Вы можете использовать API Debug , чтобы дать вашему приложению возможность запускать и останавливать запись активности ЦП в профилировщике ЦП.

Профилировщик ЦП начинает запись, когда ваше приложение вызывает startMethodTracing(String tracePath) , а профилировщик ЦП прекращает запись, когда ваше приложение вызывает stopMethodTracing() . При записи активности ЦП, инициированной с помощью этого API, профилировщик ЦП отображает Debug API как активную конфигурацию записи ЦП.

Чтобы управлять записью активности ЦП с помощью API Debug , разверните инструментированное приложение на устройстве под управлением Android 8.0 (уровень API 26) или более поздней версии. Запись, инициируемая API, поддерживается в профилируемых приложениях, однако профилировщикам Android Studio требуется отлаживаемое приложение для отображения состояния записи в пользовательском интерфейсе.

Важно: API Debug предназначен для использования отдельно от других средств запуска и остановки записи активности ЦП, таких как кнопки в графическом интерфейсе пользователя CPU Profiler и настройка в конфигурации записи для автоматической записи при запуске приложения.

Из-за ограничения размера буфера в 8 МБ метод startMethodTracing(String tracePath) в API Debug предназначен для коротких интервалов или сценариев, в которых сложно запустить или остановить запись вручную. Для более длительных периодов записи используйте пользовательский интерфейс профилировщика в Android Studio.

Дополнительные сведения см. в разделе Создание журналов трассировки путем инструментирования вашего приложения .

Запись активности процессора во время запуска приложения

Чтобы начать автоматическую запись активности ЦП во время запуска приложения, выполните следующие действия:

  1. Выберите «Выполнить» > «Изменить конфигурации» .
  2. На вкладке «Профилирование» установите флажок « Начать запись трассировки метода при запуске» .
  3. Выберите конфигурацию записи ЦП в меню.
  4. Нажмите Применить .
  5. Разверните свое приложение на устройстве под управлением Android 8.0 (уровень API 26) или более поздней версии, выбрав «Выполнить» > «Профиль» .