Ускорение CRC32C с помощью AVX-512: новые горизонты производительности в PostgreSQL


В PostgreSQL 18 внедрена поддержка AVX-512 для вычислений CRC32C, что значительно ускоряет обработку данных. Нововведение обеспечивает до 50% и 3x ускорение на процессорах Intel Tiger Lake и обещает еще большие преимущества на новых моделях Intel и AMD. Это важный шаг в развитии производительности популярной открытой базы данных.

Ускорение CRC32C с помощью AVX-512: новые горизонты производительности в PostgreSQL

В мире баз данных постоянно идет борьба за производительность и эффективность. Одним из последних нововведений в PostgreSQL 18 стало использование инструкций AVX-512 для вычислений CRC32C. Это изменение обещает значительное ускорение обработки данных, что особенно важно для пользователей, работающих с большими объемами информации.

Что такое CRC32C и почему это важно?

CRC32C (Cyclic Redundancy Check 32-bit Castagnoli) — это алгоритм контрольной суммы, используемый для проверки целостности данных. В контексте баз данных, таких как PostgreSQL, CRC32C играет ключевую роль в обеспечении надежности и быстродействия операций с данными.

Ранее в PostgreSQL для вычисления CRC32C использовались инструкции SSE 4.2, которые обрабатывали до 8 байт за раз. Однако новое решение с использованием AVX-512 позволяет обрабатывать до 64 байт за итерацию цикла, что значительно ускоряет процесс.

Преимущества использования AVX-512

Инструкции AVX-512 доступны на процессорах Intel начиная с 2019 года и на процессорах AMD с 2022 года. Использование этих инструкций позволяет достичь впечатляющих результатов:

  • На процессорах Intel Tiger Lake (2020) производительность CRC32C увеличилась на 50% для входных данных размером от 64 до 112 байт.
  • Для входных данных размером 256 байт ускорение составило в три раза.

Эти улучшения особенно заметны на процессорах с поддержкой AVX-512, таких как новые модели Intel Xeon и AMD Zen 4 и Zen 5. Ожидается, что на этих процессорах производительность будет еще выше.

Реализация и проверка на практике

Для использования AVX-512 в PostgreSQL теперь требуется проверка на наличие поддержки этих инструкций во время выполнения программы. Это не влияет на производительность в критически важных случаях, таких как работа с WAL (Write-Ahead Logging), поскольку с коммита e2809e3 финальные вычисления с 20-байтовым заголовком WAL выполняются встроенным и развернутым образом при использовании расширения SSE 4.2.

Тестирование показало, что производительность при использовании косвенного вызова функции на нескольких десятках байт, за которым следуют встроенные инструкции на постоянном входе в 20 байт, либо равна, либо немного превышает производительность при двух прямых вызовах функций.

Влияние на пользователей PostgreSQL

Для пользователей PostgreSQL это нововведение означает значительное улучшение производительности при работе с большими объемами данных. Это особенно актуально для приложений, требующих высокой скорости обработки и проверки данных, таких как системы аналитики больших данных, облачные хранилища и другие.

Кроме того, это обновление является частью более широкого спектра улучшений в PostgreSQL 18, включая поддержку IO_uring и асинхронного ввода-вывода в пакетном режиме. Все эти изменения делают PostgreSQL еще более привлекательным выбором для пользователей, ищущих высокую производительность и надежность.

Перспективы для будущего

С внедрением AVX-512 для вычислений CRC32C PostgreSQL продолжает развиваться в направлении повышения производительности и эффективности. Ожидается, что будущие версии базы данных будут еще больше оптимизированы для работы с новейшими процессорами и технологиями.

Для пользователей, заинтересованных в использовании новейших технологий, стоит обратить внимание на НайсОС — перспективный российский Linux-дистрибутив, который также может предложить интересные решения для оптимизации производительности и безопасности.

В заключение, внедрение AVX-512 для вычислений CRC32C в PostgreSQL 18 — это важный шаг вперед, который обещает значительные улучшения производительности и открывает новые возможности для пользователей этой популярной открытой базы данных.