PostgreSQL은 CRC32C 계산을 위해 AVX-512 명령어를 구현하여 성능을 크게 향상시켰습니다. 이전 방법은 SSE 4.2 확장에서 제공하는 기본 CRC32 명령어를 사용하여 한 번에 최대 8바이트를 처리했습니다. 새로운 AVX-512 접근 방식은 루프 반복당 64바이트를 처리할 수 있어 속도 개선을 가져옵니다. Intel Tiger Lake 하드웨어에서 CRC 계산은 이제 64바이트에서 112바이트 입력에 대해 50% 더 빠르며, 256바이트 입력에 대해서는 최대 3배 더 빨라졌습니다.
VPCLMULQDQ 명령어는 512비트 레지스터에서 작동하며, 2019년부터 Intel에서, 2022년부터 AMD에서 사용할 수 있었습니다. 128비트 레지스터를 위한 구형 변형도 있지만, Zen 2 아키텍처에서 짧은 입력에 대해 표준 CRC 명령어보다 성능이 떨어집니다. 이 구현은 SSE 4.2를 대상으로 하는 빌드를 위한 런타임 검사를 포함하고 있지만, 이는 성능에 큰 영향을 미치지 않으며, 특히 Write-Ahead Logging(WAL)에서는 최종 계산이 인라인 및 언롤링 기법을 통해 최적화됩니다.
PostgreSQL의 CRC32C 계산에서의 이러한 발전은 성능을 향상시킬 뿐만 아니라 현대 CPU 명령어 집합을 활용하여 데이터베이스 작업을 개선할 수 있는 잠재력을 보여주며, 고성능 데이터 처리를 의존하는 사용자에게 주목할 만한 업데이트가 됩니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.