Кто-нибудь может направить меня к команде для измерения пропусков TLB в LINUX, пожалуйста? Можно ли рассматривать (или приближать) незначительные ошибки страницы при пропадании TLB?
Вы можете использовать perf для доступа к аппаратным счетчикам производительности:
$ perf stat -e dTLB-load-misses,iTLB-load-misses /path/to/command
например:
$ perf stat -e dTLB-load-misses,iTLB-load-misses /bin/ls > /dev/null
Performance counter stats for '/bin/ls':
5,775 dTLB-load-misses
1,059 iTLB-load-misses
0.001897682 seconds time elapsed
Незначительная ошибка и промах TLB не являются хорошими аналогами. Незначительная ошибка возникает, когда запрашиваемая страница находится в памяти, но не отображается в текущей таблице страниц. Конечно, это может быть случай, когда незначительная ошибка будет связана с пропуском TLB (поскольку записи TLB являются ярлыками для записей таблицы страниц), но пропуски TLB будут вызваны многими другими вещами, например, серьезными сбоями или переходом в локальность программы ,
Незначительные сбои страницы возникают, когда страница уже загружена в память, но соответствующая запись таблицы страниц еще не создана. Как побочный эффект, незначительные сбои страницы всегда приводят к пропускам TLB. С другой стороны, пропадание TLB происходит, когда запись перевода для страницы не находится в TLB (которая является кешем), что может произойти, когда эта запись TLB ранее была исключена из-за ограниченной емкости TLB.