Да, блок PMU в вашем процессоре, вероятно, может делать то, что вы хотите, с помощью различных счетчиков uncore - в частности, они могут подсчитывать различные ответы вне ядра для доступа к нелокальной памяти. Это сообщение в блоге является разумным отправная точка.
Основная проблема заключается в том, что часто инструмент perf
, привязанный к конкретной версии ядра, отстает в поддержке современных процессоров 1, особенно когда дело доходит до uncore и событий, связанных с NUMA 2.
Чтобы обойти это, вы можете использовать pmu-tools, который предоставляет ocperf
сценарий оболочки который использует все perf
, лежащие в основе вашей системы, но с актуальными идентификаторами событий, загруженными непосредственно с Intel. Обычно это дает вам доступ к нужным событиям uncore.
Конечно, даже когда это работает, эти события часто очень трудно интерпретировать, особенно потому, что ваша ментальная модель запросов к памяти усложняется множеством факторов, таких как поведение предварительной выборки, запрос на владение, доступы. которые "попадают" в строчку-буфер в процессе заполнения и т. д. и т. д.
1 И то, и другое из-за добавления новых процессоров / событий из-за некоторой задержки, но особенно потому, что инструмент привязан к ядру, и вы, вероятно, не используете передовое ядро, поэтому даже если основная ветка perf
может иметь поддержку , вы застряли с версией perf
, связанной с вашим ядром.
2 Вероятно, потому что большинство разработчиков ядра, как и разработчики в целом, не работают с системами NUMA.
person
BeeOnRope
schedule
16.01.2017