Измерение стоимости обработки пропусков TLB в x86-64
Я хочу оценить потери производительности из-за пропусков TLB на машине x86-64 (Intel Nehalem) под управлением Linux. Я хочу получить эту оценку с помощью некоторых счетчиков производительности. У кого-нибудь есть указания на то, как лучше всего это оценить?
Спасибо Арка
1 ответ
Если вы можете получить доступ к системе на основе "Westmere", характеристики производительности вашего кода должны быть примерно такими же, как у "Nehalem", но у вас будет доступ к новому событию счетчика производительности оборудования, которое измеряет почти точно то, что вы хочу.
На Westmere наилучшая оценка потери производительности при ожидании обработки пропусков TLB, вероятно, основана на счетчике производительности оборудования Событие 08H, маска 04H "DTLB_LOAD_MISSES.WALK_CYCLES", который описывается как подсчет "Циклы. Мисс Handler занят страницей". ходить из-за пропадания груза в TLB второго уровня ". Это описано в "Руководстве разработчика программного обеспечения для архитектуры Intel® 64 и IA-32, том 3B: Руководство по системному программированию, часть 2" (номер документа: 253669), доступном в Интернете по адресу http://www.intel.com/content/www/. нас / о / архитектура-технический / 64-IA-32-архитектура, программно-разработчик-т-3b-часть-2-manual.html
Причина, по которой это событие необходимо, состоит в том, что время обработки пропусков TLB определяется временем, необходимым для чтения строки кэша, содержащей запись таблицы страниц. Если эта строка кэша находится в кэше L2, то издержки, связанные с пропуском TLB, будут очень малы (порядка 10 циклов). Если строка находится в кеше L3, то, возможно, 25 циклов. Если строка находится в памяти, то ~200 циклов.
- Если также имеется ошибка в кешах перевода страниц верхнего уровня, потребуется несколько поездок в память, чтобы найти и извлечь нужную запись таблицы страниц (например, /questions/7081853/pri-kakih-obstoyatelstvah-bolshie-stranitsyi-mogut-privesti-k-uskoreniyu/7081888#7081888).
- На некоторых процессорах счетчики кэша L2 могут сказать вам, сколько обходов таблиц попадало и пропускалось в L2, но не на Nehalem. (Это не очень поможет в этом случае, так как обходы TLB, которые попадают в L3, также довольно быстрые, и что вы действительно хотите, так это обходы TLB, которые должны идти в память.)