Точнее, как первичный инструмент ассоциирует события PMU с функциями , я уже понял, что, когда подсистема ядра выполняет запись счетчиков событий, она также записывает счетчик программ (ПК), чтобы он мог связывать счетчик с функцией.Как перфорировать события для функций?
Однако, чтобы действительно получить результат мелкого зерна, вам нужно сэмплировать счетчики с очень высокой скоростью, иначе вы можете связать счетчики с группой функций. Но чтение счетчиков и запись дискретизированных данных (счетчиков, ПК, стоп-вызовов) в перпендикулярное пространство mmap очень навязчивы.
Я читал в некоторых источниках, что эта выборка бывает только тогда, когда ЦУП счетчики переполнения, но это может быть очень грубым, если я не устанавливая счетчики переполнить очень быстро
, что я здесь отсутствует?
Вау очень большое спасибо. i didn ' t ожидаем такой подробный ответ. – Strudle
Итак, в принципе, счетчик игнорируется, и он просто пробуждает появление ПК во время событий переполнения.Я вижу, как это работает, когда событие представляет собой циклы процессора и с достаточным количеством выборок. Но как это работает, когда событие пропускает кеш, например. Гарантировано ли, что события ovewflow в промахах кеша также будут хорошим приближением – Strudle
В основном в отсчете выборки равен нулю на irq. Все события работают с использованием одного модуля PMU, они только настраивают его для разных идентификаторов событий. Кэш промахивается к ближайшим кэшам (каждое ядро имеет собственные кеши L1 и L2) может быть зарегистрировано почти точно (но в некоторых случаях архитектура может зависеть от USE загруженного значения, от команд LOAD). События Offcore/uncore не так просты, как в каком-то ресурсе, который совместно используется ядрами и использует глобальные PMU; чтобы связать их с особыми синтетическими событиями локального ПМУ, можно использовать для корреляции счетчиков и маршрутных прерываний (но я полностью неправильно понимаю эту часть). – osgx