Собирайте и просматривайте следы

На этой странице представлены подробные инструкции по сбору данных Perfetto для использования с Wattson и по анализу полученных данных о потреблении энергии в пользовательском интерфейсе Perfetto.

Хотя существует множество способов сбора трассировки Perfetto, методы, описанные на этой странице, включают в себя конкретные требования и рабочие процессы для генерации трассировки, совместимой с Wattson.

Минимальные требования к сборке

Для проверки наличия у Wattson необходимых метаданных для корректной работы необходимо собрать данные трассировки с устройства, на котором установлена ​​последняя версия сборки. Минимальные версии сборок для оценки мощности ЦП и ГП различаются в зависимости от устройства.

Устройство Минимальные требования к сборке: оценка загрузки процессора. Минимальные требования к сборке: оценка производительности графического процессора.
Pixel Watch 2 Нет минимальных требований к количеству построенных зданий. Не поддерживается
Pixel Watch 3 25Q2 Не поддерживается
Пиксель 6 Нет минимальных требований к количеству построенных зданий. 25Q2
Пиксель 9 25Q2 Не поддерживается
Пиксель 10 25Q2 Не поддерживается
Galaxy XR (SXR2230P) Нет минимальных требований к количеству построенных зданий. Не поддерживается

Получите трассировку Perfetto из командной строки.

В этом разделе представлен примерный алгоритм сбора трассировок Perfetto для использования с Wattson. Все команды, перечисленные в следующих шагах, предназначены для выполнения с хоста Android Debug Bridge (adb) .

  1. Для настройки и запуска трассировки создайте конфигурационный файл Perfetto на устройстве. Пример конфигурации можно найти в файле wattson.cfg в исходном коде.

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

    # Polls CPU freq/idle state at the start of trace
    data_sources: {
       config {
          name: "linux.sys_stats"
          sys_stats_config {
             # Large period so polling doesn't happen continuously
             # Intent is just to poll once upfront
             cpufreq_period_ms: 100000000
             cpuidle_period_ms: 100000000
          }
       }
    }
    data_sources: {
       config {
          name: "linux.ftrace"
          ftrace_config {
             ftrace_events: "devfreq/devfreq_frequency"
             ftrace_events: "cpuhp/cpuhp_enter"
             ftrace_events: "cpuhp/cpuhp_exit"
             ftrace_events: "cpuhp/cpuhp_multi_enter"
             ftrace_events: "power/cpu_frequency"
             ftrace_events: "power/cpu_idle"
             ftrace_events: "power/suspend_resume"
          }
       }
    }
    
  2. Чтобы включить оценку энергопотребления кэша L3, активируйте событие fttrace/print :

    adb shell perfetto --txt -c /data/misc/perfetto-configs/wattson.cfg --background-wait -o /data/misc/perfetto-traces/trace
    
    # Optional
    adb shell simpleperf stat -a -e arm_dsu_0/l3d_cache/,arm_dsu_0/bus_access/ --interval 10
    
  3. (Необязательно) Установите начало окна Ваттсона — маркер, встроенный в трассировку Perfetto, который указывает начало записи. Этот маркер повышает точность измерения Ваттсона.

    # Optional
    adb shell "echo 'I|0|wattson_start' >/sys/kernel/tracing/trace_marker"
    
  4. Запустите интересующую вас задачу.

  5. (Необязательно) Включите событие трассировки ftrace/print , чтобы установить конец окна Wattson:

    # Optional
    adb shell "echo 'I|0|wattson_stop' >/sys/kernel/tracing/trace_marker"
    
  6. Очистите буферы трассировки и загрузите файл трассировки Perfetto:

    adb shell killall -w perfetto
    adb pull /data/misc/perfetto-traces/trace my_perfetto_trace.pb
    

Соберите трассировку Perfetto с помощью пользовательского интерфейса Perfetto.

Для сбора трассировок с помощью пользовательского интерфейса Perfetto необходимо включить определенные настройки для Wattson. При записи новой трассировки в пользовательском интерфейсе Perfetto включите переключатели «Подробности планирования » и «Частота ЦП и состояния простоя» :

Детали планирования, а также переключатели частоты ЦП и состояний простоя.

Рисунок 1. Детали планирования, переключение частоты ЦП и состояний простоя.

Для устройств Pixel 9 в настройках Ftrace установите флажок devfreq , чтобы включить сбор данных о частоте устройства:

Включить частоту устройства

Рисунок 2. Частота включения устройства.

Посмотреть разбивку по рельсам

С помощью Perfetto можно анализировать оценки энергопотребления Wattson, выбрав временной диапазон для просмотра статистики по каждому каналу, или включить определенные параметры трассировки для определения энергопотребления на уровне потока, процесса или корпуса.

Для взаимодействия с Wattson в Perfetto:

  1. Откройте трассировку в Perfetto.

    Если ваше устройство поддерживается Wattson, трассировки Wattson будут автоматически отображены в списке:

    Просмотрите следы Wattson в Perfetto

    Рисунок 3. Просмотр трасс Ваттсона в Perfetto.

  2. Нажмите на Wattson , чтобы развернуть и просмотреть разбивку по виртуальным железнодорожным линиям:

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

    • Статистические данные генерируются для любого выбранного (или отмеченного) пользователем региона.

    • Статистическую таблицу можно отсортировать, щелкнув по названию любого столбца.

    • Итоговые суммы оценок отображаются непосредственно под заголовками столбцов.

    Оценки стоимости железнодорожных перевозок

    Рисунок 4. Расчеты стоимости железнодорожных перевозок.

Просмотреть трассировку по каждому потоку, процессу или пакету.

Если у вас включена трассировка планировщика и вы видите фрагменты потоков в Perfetto, вы также можете получить информацию об энергопотреблении на уровне потоков или процессов:

  1. В Perfetto выберите область срезов нитей.
  2. Просмотрите подробную информацию по потоку, процессу или упаковке.

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

Анализ на уровне потоков

В дополнение к минимальным требованиям для базовой оценки энергопотребления, необходимо добавить следующую конфигурацию в раздел linux.ftrace в файле wattson.cfg для распределения энергопотребления на уровне потоков:

data_sources: {
    config {
        name: "linux.ftrace"
        ftrace_config {
            ftrace_events: "sched/sched_switch"
        }
    }
}

Разбивка по потокам

Рисунок 5. Разбивка по уровням резьбы.

Разбивка на уровне процессов

Для атрибуции на уровне процессов необходимо включить process_states для данных, собираемых в трассировке Perfetto. Включите следующий источник данных в файле конфигурации wattson.cfg :

data_sources: {
    config {
        name: "linux.process_stats"
        target_buffer: 1
        process_stats_config {
            scan_all_processes_on_start: true
        }
    }
}

По результатам технологического процесса

Рисунок 6. Разбивка по процессам.

Детализация на уровне пакета

Для атрибуции на уровне пакетов необходимо включить android.packages_list для данных, собираемых в трассировке Perfetto. Включите следующий источник данных в файле конфигурации wattson.cfg :

data_sources {
  config {
    name: "android.packages_list"
    target_buffer: 1
  }
}

Аналогично распределению на уровне потоков и процессов, при выборе диапазона фрагментов потоков следует просмотреть разбивку на уровне пакетов.

Разбор на уровне потоков

Рисунок 7. Разбивка по уровням потоков.

оценка энергопотребления графического процессора

Функция оценки энергопотребления графического процессора поддерживается на Pixel 6, 6 Pro и 6a. Чтобы включить оценку энергопотребления графического процессора, добавьте следующий источник данных в файл конфигурации wattson.cfg :

data_sources: {
  config {
    name: "linux.ftrace"
    ftrace_config {
      ftrace_events: "mali/gpu_power_state"
      ftrace_events: "power/gpu_frequency"

      # [Optional] Enable GPU Work Period (not used by Wattson, but useful for debugging)
      ftrace_events: "power/gpu_work_period"
    }
  }
}

Для выбранного параметра оценки энергопотребления графического процессора Wattson отображаются в пользовательском интерфейсе Perfetto на вкладке « Оценки Wattson» .

Оценка энергопотребления графического процессора

Рисунок 8. Оценка энергопотребления графического процессора.

Часто задаваемые вопросы

Вот несколько часто задаваемых вопросов о компании Wattson.

Ожидается ли, что Wattson будет соответствовать выходным параметрам лабораторного оборудования для измерения мощности?

Для большинства рабочих нагрузок оценка Wattson совпадает с измерениями энергопотребления, проведенными в лаборатории. Однако это не всегда так, и это не является целью Wattson.

Система Wattson предназначена для проверки улучшений в энергопотреблении или выявления регрессий в энергопотреблении без учета шума, вызванного факторами окружающей среды (температурой), межблочными вариациями утечки тока в чипе (один и тот же SoC может иметь разную утечку тока в зависимости от конкретного устройства) или различиями в калибровке лабораторного оборудования для измерения энергопотребления.

Чем Wattson полезнее, чем анализ процессорного времени или циклов процессора?

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

Удвоение частоты процессора не всегда приводит к удвоению мощности или производительности процессора.

Насколько точен Wattson по сравнению с аппаратными решениями?

Мы сравнили показания Wattson с лабораторным оборудованием для измерения мощности в различных сценариях использования, предоставленных разными командами. Средняя погрешность в Wattson составляет 1 процентный пункт, а стандартное отклонение — 1,5 процентных пункта. Этот уровень корреляции сохраняется как в тестах длительностью 10 секунд, так и в тестах, длящихся 4 часа. Таким образом, отсутствует эффект «ползучести» или «маскирования» ошибок, зависящий от времени.

Эксперименты с конфигурацией ядра Pixel 6

Вот несколько базовых экспериментов, демонстрирующих типичные сбои в работе Wattson с использованием Pixel 6:

Wattson.cfg

В этом разделе представлена ​​типичная конфигурация для включения Wattson в Perfetto:

  write_into_file: true
  flush_period_ms: 30000
  file_write_period_ms: 30000

  buffers: {
      size_kb: 2048
      fill_policy: RING_BUFFER
  }
  buffers: {
      size_kb: 200000
      fill_policy: RING_BUFFER
  }

  # Needed for process level power attribution
  data_sources: {
      config {
          name: "linux.process_stats"
          target_buffer: 0
          process_stats_config {
              scan_all_processes_on_start: true
          }
      }
  }

  # Needed for package level power attribution
  data_sources: {
      config {
          name: "android.packages_list"
          target_buffer: 0
      }
  }

  # Needed for determining CPU freq/idle initial state
  data_sources: {
      config {
          name: "linux.sys_stats"
          sys_stats_config {
              cpufreq_period_ms: 100000000
              cpuidle_period_ms: 100000000
          }
      }
  }

  # Needed for estimating power and thread level power attribution
  data_sources: {
      config {
          name: "linux.ftrace"
          target_buffer: 1
          ftrace_config {
              # Minimum data sources for estimating power
              ftrace_events: "power/cpu_frequency"
              ftrace_events: "power/cpu_idle"
              ftrace_events: "power/suspend_resume"
              ftrace_events: "cpuhp/cpuhp_enter"
              ftrace_events: "cpuhp/cpuhp_exit"
              ftrace_events: "cpuhp/cpuhp_multi_enter"
              ftrace_events: "devfreq/devfreq_frequency"

              # Needed for Wattson start/stop markers
              ftrace_events: "ftrace/print"

              # Needed for thread level power attribution
              ftrace_events: "sched/sched_switch"

              # Needed for process level power attribution
              ftrace_events: "sched/sched_process_free"
              ftrace_events: "task/task_newtask"
              ftrace_events: "task/task_rename"
          }
      }
  }