pureikyubu/Docs/EMU/SamplingProfilerRus.md
2020-04-16 17:21:44 +03:00

2 KiB
Raw Permalink Blame History

Sampling Profiler

Данный профайлер используется для поиска узких мест в эмулируемых программах (играх).

Если вы уже знакомы с профайлером Visual Studio, то понять эту реализацию профайлера будет проще.

Способ профайлинга

Профайлер работает в своем потоке.

После запуска профайлера он начинает с определенным интервалом программного таймера Gekko (TBR) опрашивать значение регистра Program Counter.

Периодичность опроса задается параметрами профайлера, обычно периодичности 1 msec бывает достаточно.

Пара сэмплированных значений TBR + PC сохраняются в Json.

После завершения работы профайлера накопленные данные сериализуются в Json файл.

Анализ полученных данных

Полученные данные загружаются в приложение RnD Profiler.

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

Частота нахождения получается по значению Program Counter, а длительность по значению TBR.

Таким образом можно понять где эмулируемая программа выполнялась дольше/чаще всего.

Дополнительно можно загрузить файл с символьной информацией (Map), чтобы вместо адресов видеть имена функций.