Есть ли способ определить инструкцию, которая вызвала самую последнюю ошибку кэша последнего уровня на современных процессорах Intel?

В настоящее время я могу читать аппаратные счетчики при промахах кэша последнего уровня и ссылках из пространства пользователя, используя wrmsr выбрать их, а затем rdpmc читать их.

Однако, хотя некоторые из пропусков являются очень очевидными ссылками на то, что я не хотел бы попадать в кеш, другие гораздо более тонкие и иногда перемещаются, когда один и тот же путь кода выполняется несколько раз (порядка 100000 раз).

Я подозреваю, что некоторые из этих ошибок происходят из-за аппаратной предварительной выборки, поэтому я отключил аппаратную предварительную выборку через BIOS, но я все еще получаю скользящие ошибки в кэше с причинами, которые трудно определить.

Есть ли какая-либо возможность в ядре Linux или в регистрах Intel определять адрес инструкции, которая вызвала самую последнюю ошибку кэша последнего уровня?

Если это полезно, я бегу 2.6.32-279.el6.x86_64 на Intel Xeon X3470,

0 ответов

Другие вопросы по тегам