Подсчет производительности для циклов, несовместимых и не отражающих частоту процессора - PullRequest
0 голосов
/ 25 мая 2018

Введение: Я написал модуль ядра Linux для мониторинга счетчиков производительности на платформе ARM v7 с процессорами Cortex A-15 и A-7 (Odroid XU3).Одним из счетчиков, который я пытаюсь использовать в своих исследованиях, является счетчик циклов, который из технических справочников ARM имеет свой собственный счетчик.Я проверил свой код на предмет других реализаций и ссылок ARM, найденных в Интернете;Вот фрагмент части, которая включает счетчики ЦП:

Используемые ресурсы:

Проблема: Когда я печатаю циклы, прошедшие в течение фиксированного периода выборки (100 мс) для фиксированной частоты ЦП (1,4 ГГц в случае ядра 0), я вижу огромное количество отклоненийв значениях, возвращаемых модулем.Смотрите таблицу ниже для примера этого.Дисперсия не только кажется очень высокой, но и количество измеренных циклов не отражает количество циклов, которое я ожидаю увидеть записанным, учитывая время выборки и фиксированную частоту (для данного сценария я ожидал 1,4e8 циклов для каждой выборки).Что может быть причиной такого отклонения от ожидаемого количества циклов?

Изменчивость измеренных циклов для модуля ядра, работающего на всех ядрах и только на ядре 0.

1 Ответ

0 голосов
/ 25 мая 2018

После дальнейших обсуждений с коллегами я считаю, что расхождение между измеренными и ожидаемыми циклами составляет cpuidle : это подсистема в ядре Linux, которая переводит ядро ​​ЦП в состояние с более низким энергопотреблением, когдаЯдро ничего не делает.Некоторые из самых низких состояний отключают часы, что, вероятно, приводит к тому, что счетчик циклов перестает увеличиваться.Эта статья дает хорошее описание cpuidle и его работы: https://lwn.net/Articles/384146/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...