simpleperf Инструмент профилирования для Android Тип файла: команда usage: simpleperf [common options] subcommand [args_for_subcommand] Возможные уровни: include verbose debug warning info error fatal По умолчанию - info. журнала Android вместо stderr. Подкоманды: api-collect собирать данные записи, сгенерированные API приложения api-prepare подготовить запись через API приложения debug-unwind отладка/тестирование в автономном режиме dump дамп производительности help напечатать справочную информацию для simpleperf inject анализировать данные трассировки инструкции etm kmem собирать информацию о выделении памяти ядра list список доступных типов событий merge объединить несколько perf.data в один monitor отслеживать события и выводить их текстовые представления на стандартный вывод record записать информацию о выборке в perf.data report сообщить информацию о выборке в perf.data report-sample сообщать необработанную информацию о проверке в perf.data stat собирать информацию счетчика производительности trace-sched отслеживать общесистемные события времени выполнения процесса Пример: simpleper flist List of hw-cache events: # More cache events are available in `simpleperf list raw`. List of coresight etm events: List of hardware events: List of pmu events: List of raw events provided by cpu pmu: # Please refer to "PMU common architectural and microarchitectural event numbers" # and "ARM recommendations for IMPLEMENTATION DEFINED event numbers" listed in # ARMv8 manual for details. List of software events: alignment-faults context-switches cpu-clock cpu-migrations emulation-faults major-faults minor-faults page-faults task-clock List of tracepoint events: Комментарии Как работает Simpleperf Современные процессоры имеют аппаратный компонент, называемый блоком мониторинга производительности (PMU). PMU имеет несколько аппаратных счетчиков, подсчитывающих такие события, как количество выполненных циклов процессора, количество выполненных инструкций или количество промахов кэша. Ядро Linux оборачивает эти аппаратные счетчики в события аппаратной производительности. Кроме того, ядро Linux также предоставляет аппаратно-независимые программные события и события точек трассировки. Ядро Linux предоставляет все это пользовательскому пространству через системный вызов perf_event_open, который использует simpleperf. Simpleperf имеет три основные функции: статистика, запись и отчет. Команда stat дает сводку о том, сколько событий произошло в профилируемых процессах за определенный период времени. Учитывая пользовательские параметры, simpleperf включает профилирование, выполняя системный вызов ядра Linux. Ядро Linux включает счетчики при планировании профилируемых процессов. После профилирования simpleperf считывает счетчики из ядра Linux и сообщает сводку счетчиков. Команда record записывает выборки профилируемого процесса за период времени. Учитывая пользовательские параметры, simpleperf включает профилирование, выполняя системный вызов ядра Linux. Simpleperf создает сопоставленные буферы между simpleperf и ядром Linux. Ядро Linux включает счетчики при планировании профилируемых процессов. Каждый раз, когда происходит заданное количество событий, ядро linux выгружает образец в отображаемый буфер. Simpleperf считывает выборки из отображаемых буферов и генерирует perf.data. Команда report считывает файл «perf.data» и все общие библиотеки, используемые профилируемыми процессами, и выводит отчет, показывающий, на что было потрачено время. Simpleperf list используется для перечисления всех событий, доступных на устройстве. Разные устройства могут поддерживать разные события из-за различий в оборудовании и ядре. Simpleperf stat используется для получения необработанной информации счетчика событий профилируемой программы или всей системы. Передавая параметры, мы можем выбрать, какие события использовать, какие процессы/потоки отслеживать, как долго отслеживать и интервал печати. Simpleperf record используется для дампа записей профилируемой программы. Передавая параметры, мы можем выбрать, какие события использовать, какие процессы/потоки отслеживать, с какой частотой выгружать записи, как долго отслеживать и где хранить записи. Simpleperf report используется для создания отчета на основе данных perf.data, сгенерированных командой записи simpleperf. Команда Report группирует записи в разные записи выборки, сортирует записи выборки в зависимости от того, сколько событий содержит каждая запись выборки, и распечатывает каждую запись выборки. Передавая параметры, мы можем выбрать, где найти perf.data и исполняемые двоичные файлы, используемые отслеживаемой программой, отфильтровать неинтересные записи и решить, как группировать записи. Ниже приведен пример. Записи сгруппированы в 4 выборочные записи, каждая запись представляет собой строку. Есть несколько столбцов, каждый столбец показывает часть информации, относящуюся к выборочной записи. Первый столбец — «Накладные расходы», в котором показан процент событий внутри текущей выборочной записи от общего числа событий. Поскольку событие производительности — это циклы ЦП, накладные расходы можно рассматривать как процент времени ЦП, используемого в каждой функции. |