Я пытаюсь определить, какие аппаратные счетчики, доступные на процессоре ARM Cortex A15, являются правильными для определения ошибок системного кэша L2.
Мое приложение здесь - это регулятор частоты напряжения уровня ядра (т.е. он может заменить регулятор по требованию).Поскольку мне нужен доступ к счетчикам производительности на системном уровне, а не к конкретной среде выполнения программы, я не использую существующие утилиты, такие как PAPI или Linux Perf Tool.Из моего прошлого опыта работы с обоими я понимаю, что их лучше использовать для мониторинга статистики производительности для конкретной программы или инструментированного двоичного файла.
Я реализовал модуль ядра, который периодически обновляет несколько значений аппаратного счетчика до конечных точек sysfs.Ресурсы, которые я использовал, включают в себя:
Счетчик оборудования, которым я в настоящее время являюсьиспользуется для измерения пропусков L2 - событие 0x17: «Пополнение кэша данных L2».Печать этого значения последовательно дает 0, даже при выполнении тестов с большим объемом данных.Есть ли другое событие или набор событий, которые я должен использовать для определения пропусков кэша L2?Возможно, 0x13, «Доступ к памяти данных», или какая-то совокупность событий?
Вполне возможно, что корнем моего вопроса является недопонимание «Пополнения кэша данных L2», но я не смог найтиразъяснение по этому вопросу с помощью документации и поиска переполнения стека.
EDIT : я обнаружил, что при пополнении L2 показывалось 0, потому что 5-й аппаратный счетчик по некоторым причинам не работает должным образом;переназначение пополнения L2 другому счетчику решило эту конкретную проблему.
РЕДАКТИРОВАТЬ 2: Этот 5-й аппаратный счетчик не работал, потому что я не включил так много.Глупый я.