ОТЧЁТ о тестировании СУБД Postgres Pro на платформе IBM Power9

Цель тестирования

Определить производительность СУБД Postgres Pro на процессорах Power 9, определить эффективность масштабирования по количеству ядер, ценить эффективность технологии многопоточности SMT, реализованного в этих процессорах, сравнить с аналогичными показателями для процессоров Intel.

Методика тестирования

Компанией IBM был предоставлен тестовый сервер на POWER9 со следующими характеристиками:
Количество физических ядер — 4 (до 8 логических потоков на ядро)
RAM – 28 GB
Характеристики дисковой подсистемы несущественны, так как ввиду того, что поставленная задача касается CPU, база данных располагалась на RAM-диске для исключения эффектов, связанных с вводом-выводом.
В качестве тестовой нагрузки использовался read-only тест, входящий в комплект штатной утилиты тестирования postgres pgbench (pgbench -S).
Использовалась версия Postgres Pro Enterprise 10.5.3

Результаты

На графике показана производительность (в транзакциях в секунду), достигнутая при тестировании при различных значениях многопоточности SMT (количествах логических потоков на одном физическом ядре) от количества одновременных сессий.
График показывает, что при количестве сессий, не превышающем количество потоков, наблюдается рост производительности, практически пропорциональный количеству сессий. Этот рост тем медленнее, чем больше значение SMT, и, соответственно, выход на насыщение, когда все доступные ресурсы загружены, происходит на разных уровнях производительности.

Результаты

Относительные величины выигрыша производительности для различных значений SMT показаны в таблице:

Таким образом, рост производительности с увеличением числа логических потоков имеется, но он заметно слабее линейного. Тем не менее, при максимальной многопоточности на ядро SMT=8 система дает заметный прирост (22%) по сравнению с SMT=4. Нелинейное замедление бъясняется, предположительно, тем, что при большем количестве логических потоков на каждый из них выделяется меньшее количество аппаратных ресурсов.
Наивысшая замеренная производительность на физическое ядро в данном тесте составила 55k tps.
Предыдущие тесты показали, что технология многопоточности Hyperthreading, представленная в процессорах Intel, для задач СУБД неэффективна — несмотря на увеличение вдвое количества потоков, производительность не повышается. Поэтому в данном тесте для сравнения с CPU Intel был проведен аналогичный тест на сервере с двумя 4-ядерными процессорами Xeon(R) E3-1220 с тактовой частотой 3.0GHz (без Hyperthreading). При этом максимальная производительность на ядро составила 18k tps.

Дальнейшие направления исследований

Разработанная методика измерений применима и к серверам большого масштаба. Как показывалось ранее, алгоритмов координации доступа к общим ресурсам, имеющихся в Postgres Pro, вполне достаточно для работы с существенно большим количеством ядер. Следует провести аналогичные тесты на серверах с большим количеством CPU, чтобы определить возможности Postgres Pro по масштабированию на этом типе CPU и при необходимости провести доработки.
Интересно изучить, можно ли повысить эффективность SMT для Postgres Pro. Для этого с помощью сотрудников IBM необходимо определить, какие компоненты процессора оказываются узким местом при достижении предельной производительности и можно ли что-либо улучшить.

Выводы

  1. СУБД Postgres Pro на POWER9 хорошо масштабируется по количеству соединений и эффективно использует технологии многопоточности SMT (Simultaneous mul􀆟threading), поддерживая до 8 логических потоков на ядро.
  2. Благодаря технологии SMT процессоры IBM POWER позволяют обеспечить большое количество параллельных потоков исполнения в рамках одного сервера, что предоставляет выгодные условия для эффективной работы большого количества пользователей (сессий) с СУБД.

Оставьте комментарий