Измерять циклы, затраченные на доступ к удаленному кешу

Как измерить циклы, потраченные на доступ к общему удаленному кешу, скажем, L3. Мне нужно получить эту информацию о доступе к кешу как для всей системы, так и для каждого потока. Есть ли какие-то особые требования к инструменту / оборудованию. Или я могу использовать любую формулу, чтобы получить приблизительное значение циклов, потраченных за промежуток времени

1 ответ

Решение

Чтобы получить среднюю задержку (когда работает один поток) для различных кэшей, присутствующих на вашем компьютере, вы можете использовать инструменты профилирования памяти, такие как RMMA для окон ( http://cpu.rightmark.org/products/rmma.shtml) и Lmbench для Linux.

Вы также можете написать свои собственные тесты, основанные на идеях, используемых этими инструментами. См. Ответы на этот вопрос Stackru: измерение задержек памяти или Google, чтобы узнать, как работает тест Lmbench.

Если вы хотите найти точные задержки для определенных шаблонов доступа к памяти, вам нужно будет использовать симулятор. Таким образом, вы можете отслеживать доступ к памяти по мере ее прохождения через систему памяти. Однако симуляторы не будут моделировать все эффекты, которые присутствуют в современном процессоре или системе памяти.

Если вы хотите узнать, как несколько потоков влияют на среднюю задержку до L3, я думаю, что лучшим вариантом было бы написать собственный тест.

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