Как измерить прибыль от использования огромных страниц
Я ищу способ измерения влияния на производительность в случае использования огромных страниц. Например, у меня 192 ГБ ОЗУ сервера, 140 ГБ выделено огромными страницами. Я запускаю Postgres с общими буферами на огромных страницах.
Есть ли способ проверить производительность в ядре или на стороне libc, используя perf или eBPF? В идеале было бы лучше увидеть изменение задержки (или затраченного времени во время выполнения) определенных функций. Но проблема в том, что я не знаю, какие функции или зонды мне нужно профилировать.
2 ответа
Хорошей отправной точкой является использование perf stat
с событиями TLB. Подробности здесь.
Вам не нужны абстрактные тесты для измерения прироста или снижения производительности. Запустите тестовые наборы, которые лучше всего описывают ваш профиль нагрузки и текущую среду. Если у вас есть тяжелая последовательность PLSQL/ хранимых процедур - используйте их в качестве эталона: запустите с огромными страницами и без них во время записи времени. Это был бы лучший подход. На самом деле, если кто- то выиграет от использования огромных страниц в каком-то профиле нагрузки, который вы не используете, и вы получите статистический нулевой прирост производительности - это означает, что эта настройка бесполезна для вашей задачи.
Что касается огромных страниц, я действительно сомневаюсь, что в случае PostgreSQL будет существенное преимущество. Или в случае любого сервера SQL в целом. Но я могу ошибаться.