Обнаружение ошибок кэша и хитов прагматично в Linux - PullRequest
3 голосов
/ 29 июля 2010

Я знаю, что это вопрос, относящийся к конкретной платформе, однако я бы хотел провести некоторый анализ времени выполнения приложения, чтобы обнаружить ошибки и попадания в кеш. Я знаю cachegrind, инструмент для valgrind и vtune, и что существует множество других утилит для профилирования. Тем не менее, я заинтересован в реализации моей собственной версии обнаружения кеша. Я знаю, что cachegrind действует как симулятор кеша. Не разбирая ядро, как я могу прагматично обнаружить промах кэша? У меня такое ощущение, что это почти невозможно для приложения пользователя-пользователя, но я все равно должен был спросить.

Ответы [ 2 ]

5 голосов
/ 09 марта 2011

Есть способ сделать это! В Linux вы можете использовать подсистему подсчета производительности Linux для этой цели. Например. посмотрите здесь: http://lxr.linux.no/#linux+v2.6.37.3/tools/perf/

3 голосов
/ 29 июля 2010

Как я могу прагматически обнаружить ошибку кэша [без симуляции кэша]?

Кэши управляются оборудованием, а не ядром.Их параметры (уровни кэша, размер, политика срабатывания, обратная запись / сквозная запись и т. Д.) Зависят от реализации процессора.Как программист, вы "не должны знать, что они существуют".Таким образом, измерить пропускную способность кеша без симуляции кеша невозможно.

С другой стороны, страницы ВМ (более грубый «кеш» много ) в том смысле, что кеш содержит куски памяти.) управляются ОС.Я предполагаю, что были бы способы собрать статистику о сбоях страниц, взломав ядро ​​или даже создав изящное пользовательское приложение.Статистика сбоев страниц может быть не , что вам пригодится (особенно потому, что они подвержены влиянию других запущенных процессов), но приложение, использующее большой объем ОЗУ , может (маленький,чуть-чуть) имеют шаблоны ошибок страниц или доступа к страницам, аналогичные шаблонам доступа к кэшу процессора.Однако я не уверен в деталях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...