Использование трассировщика hwlat на STM32MP157D-DK1 для его ARM Cortex-A7

Вопрос или проблема

Я работаю с STM32MP157D-DK1 и пытаюсь использовать трассировщик hwlat для процессора arm Cortex-A7 на плате, чтобы проверить типичную аппаратную задержку.

Следующая попытка была сделана для использования трассировщика hwlat на плате:

# mount -t debugfs debugfs /sys/kernel/debug

# mount -t tracefs nodev /sys/kernel/tracing

# cd /sys/kernel/tracing

# cat hwlat_detector/window

1000000

# cat hwlat_detector/width

900000

# cat tracing_thresh

10

# cat tracing_max_latency

0

# cat tracing_cpumask

3

# cat hwlat_detector/mode

none [round-robin] per-cpu

# cat tracing_on

1

# cat current_tracer

nop

# echo hwlat > current_tracer

# sleep 1800

# cat trace

# tracer: hwlat

#

# entries-in-buffer/entries-written: 0/0   #P:2

#

#                               _-----=> irqs-off/BH-disabled

#                               / _----=> need-resched

#                           | / _---=> hardirq/softirq

#                           || / _--=> preempt-depth

#                           ||| / _-=> migrate-disable

#                           |||| /  delay

#           TASK-PID    CPU#  |||||  TIMESTAMP  FUNCTION

#           | |         |   |||||   |       |

После получаса sleep непонятно, почему trace остается пустым, и никаких итераций, показывающих задержки, не отображается.

Обратите внимание, что согласно документации по детектору аппаратной задержки:

Трассировщик hwlat_detector – это специализированный трассировщик, который используется для
обнаружения больших системных задержек, вызванных поведением определенного
подлежащего аппаратного обеспечения или прошивки, независимо от самого Linux. Код
был изначально разработан для обнаружения SMIs (System Management Interrupts)
в системах x86, однако в этой патч-сети нет ничего специфического для x86.

Я предполагаю, что причины, по которым процессоры x86 требуют SMIs (управление температурой и т. д.), также неизбежно присутствуют и в ядрах arm.

В системе вообще нет аппаратной задержки? Или что-то не так с тем, что я делаю?

Ответ или решение

Для успешного использования детектора аппаратных задержек (hwlat tracer) на плате STM32MP157D-DK1 с ARM Cortex-A7, можно рассмотреть несколько ключевых аспектов и рекомендации, которые помогут установить точную причину отсутствия выводов во время работы с трассировкой.

  1. Проверка конфигурации оборудования:

    • Убедитесь, что ваша плата STM32MP157D-DK1 поддерживает необходимую функциональность и что все необходимые модули ядра активированы. Это может потребовать проверки компиляции ядра на наличие конфигурации, связанной с аппаратной задержкой и системными прерываниями.
  2. Настройки параметров детектора hwlat:

    • Параметры, такие как window и width, играют важную роль в работе детектора. Перед запуском трассировки попробуйте изменить значение window и width, чтобы расширить диапазон поиска задержек. Например, для уменьшения width можно попробовать установить 300000 или 400000.
  3. Обновление состояния трассировки:

    • Убедитесь, что вы корректно переключили текущее состояние трассировки на hwlat. Команда echo hwlat > current_tracer должна выполняться без ошибок, и вы должны увидеть, что current_tracer изменился на hwlat.
  4. Проверка работы на других системах:

    • Если возможно, протестируйте детектор hwlat на другой плате с ARM Cortex-A7. Это поможет определить, связано ли поведение с особенностями аппаратного обеспечения вашей платы или с конфигурацией ядра.
  5. Отслеживание других типов прерываний:

    • Убедитесь, что на вашей плате нет других конфликтующих прерываний, которые могут маскировать аппаратные задержки, такие как системные прерывания управления (SMI). Проверьте журнал системы (dmesg или лог-файлы) на наличие предупреждений или ошибок.
  6. Использование других инструментов для диагностики:

    • Попробуйте использовать другие инструменты для анализа производительности, такие как ftrace или perf, чтобы убедиться, что система действительно работает и регистрирует какие-либо события.
  7. Анализ документации:

    • Обратите внимание на информацию, которая может быть специфична для вашей платформы, в официальной документации STMicroelectronics по STM32MP157, а также в документации по Linux-ядру относительно работы с вашим конкретным оборудованием.

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

Оцените материал
Добавить комментарий

Капча загружается...