Вопрос или проблема
Я работаю с 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, можно рассмотреть несколько ключевых аспектов и рекомендации, которые помогут установить точную причину отсутствия выводов во время работы с трассировкой.
-
Проверка конфигурации оборудования:
- Убедитесь, что ваша плата STM32MP157D-DK1 поддерживает необходимую функциональность и что все необходимые модули ядра активированы. Это может потребовать проверки компиляции ядра на наличие конфигурации, связанной с аппаратной задержкой и системными прерываниями.
-
Настройки параметров детектора hwlat:
- Параметры, такие как
window
иwidth
, играют важную роль в работе детектора. Перед запуском трассировки попробуйте изменить значениеwindow
иwidth
, чтобы расширить диапазон поиска задержек. Например, для уменьшенияwidth
можно попробовать установить300000
или400000
.
- Параметры, такие как
-
Обновление состояния трассировки:
- Убедитесь, что вы корректно переключили текущее состояние трассировки на hwlat. Команда
echo hwlat > current_tracer
должна выполняться без ошибок, и вы должны увидеть, чтоcurrent_tracer
изменился наhwlat
.
- Убедитесь, что вы корректно переключили текущее состояние трассировки на hwlat. Команда
-
Проверка работы на других системах:
- Если возможно, протестируйте детектор hwlat на другой плате с ARM Cortex-A7. Это поможет определить, связано ли поведение с особенностями аппаратного обеспечения вашей платы или с конфигурацией ядра.
-
Отслеживание других типов прерываний:
- Убедитесь, что на вашей плате нет других конфликтующих прерываний, которые могут маскировать аппаратные задержки, такие как системные прерывания управления (SMI). Проверьте журнал системы (
dmesg
или лог-файлы) на наличие предупреждений или ошибок.
- Убедитесь, что на вашей плате нет других конфликтующих прерываний, которые могут маскировать аппаратные задержки, такие как системные прерывания управления (SMI). Проверьте журнал системы (
-
Использование других инструментов для диагностики:
- Попробуйте использовать другие инструменты для анализа производительности, такие как
ftrace
илиperf
, чтобы убедиться, что система действительно работает и регистрирует какие-либо события.
- Попробуйте использовать другие инструменты для анализа производительности, такие как
-
Анализ документации:
- Обратите внимание на информацию, которая может быть специфична для вашей платформы, в официальной документации STMicroelectronics по STM32MP157, а также в документации по Linux-ядру относительно работы с вашим конкретным оборудованием.
В заключение, отсутствие записей в выходных данных трассировки hwlat может быть связано как с отсутствием аппаратных задержек, так и с неправильной конфигурацией либо настройками системы. Проверка всех этих аспектов и возможная корректировка значений настройки должны помочь в решении данной проблемы.