Инструменты, помогающие пропускать кеш профиля - PullRequest
1 голос
/ 15 декабря 2011

Какими инструментами пользуется сообщество, чтобы определить, являются ли ошибки в кеше проблемой, и возникают ли они там, где они встречаются в коде?

Первый вопрос:

Как определить, сколько времени тратится на ожидание данных из основной памяти в результате пропадания кеша?Будет ли профилировщик выборки, такой как OProfile, приписывать время функциям, ожидающим этих данных?Например, они не будут приписывать время функциям, ожидающим данные от чтения с диска, поэтому нужно задаться вопросом, верно ли то же самое для ожидания данных из памяти.

Второй вопрос: если я обнаружу, что ошибки в кеше действительно являются узким местом, как мне определить, какие части кода запрашивают некэшированную память?Должен ли я использовать OProfile с LLC_MISSES в качестве события?Есть ли другие инструменты, о которых я не знаю?Я предпочитаю держаться подальше от проприетарных решений, если нет веских причин использовать их, так как я не хочу, чтобы в будущем меня связывали с определенной цепочкой инструментов.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 28 апреля 2012

"Будет ли профилировщик выборки, такой как OProfile, приписывать время функциям, ожидающим этих данных? Например, они не будут приписывать время функциям, ожидающим данные от чтения с диска, поэтому нужно задаться вопросом, верно ли то же самое для ожидания данныхиз памяти. "

A: да, на однопоточном ЦП профилировщик, такой как OProfiler или VTune, будет приписывать время функциям, ожидающим пропуски кэша.

Это работает, потому что аппаратный потокМисс Кэш все еще работает.Все существующие x86 не выполняют SoEMT (многопоточность по событию).Он не работает в режиме ожидания ОС / диска, потому что процесс w5aiting на диске выключен. "

На самом деле он все еще работает для многопоточного ЦП, такого как Intel Hyperthreading. Но иногда результаты оказываются чище, если гиперпоточностьТочно так же в отношении потоков кластера AMD на Bulldozer - должно работать, но на всякий случай может быть ...

...