AVX-512 Optimization For Linux RAID Showing Up To 41% Improvement On AMD Ryzen 9 9950X
LINUX STORAGE
Biggers는 RAID 코드를 위해 AVX-512로 최적화된 xor_gen() 함수를 작성했습니다. Linux 커널의 xor_gen() 함수는 RAID5/RAID6와 같은 패리티 블록 (parity blocks)을 생성하고 검증하는 데 사용됩니다. 그는 오늘 제출한 패치와 함께 상세 내용을 언급했으며, 이 패치는 AMD Zen 4 및 최신 모델, Intel Sapphire Rapids 및 최신 모델, 또는 Intel 클라이언트 측의 경우 Rocket Lake 세대나 곧 출시될 Nova Lake를 대상으로 합니다.
"AVX-512를 사용하는 xor_gen() 구현을 추가합니다.
이 구현은 512비트 벡터, 즉 ZMM 레지스터를 사용합니다. 또한 적용 가능한 경우 세 개의 입력을 XOR 하기 위해 vpternlogq 명령어를 사용합니다.
이 기능은 AVX512F && !PREFER_YMM를 갖춘 x86_64 CPU에서 활성화됩니다. 실제로 이는 다음을 의미합니다:
-
AMD Zen 4 및 이후 모델 (클라이언트 및 서버)
-
Intel Sapphire Rapids 및 이후 모델 (서버)
-
Intel Rocket Lake (클라이언트)
-
Intel Nova Lake 및 이후 모델 (클라이언트)
!PREFER_YMM 조건은 Intel Skylake Server 및 Intel Ice Lake의 오래된 AVX-512 구현을 제외합니다. 이들은 이 코드를 실행할 수는 있지만, ZMM 레지스터를 사용할 때 과도하게 클럭 속도가 저하되는 (downclocking) 현상이 있는 것으로 알려져 있습니다. 이는 암호화 (crypto) 및 CRC 코드에서 사용하는 것과 동일한 정책입니다."
정말 흥미로운 부분은 이 AVX-512 구현을 통한 성능 향상입니다. AMD Ryzen 9 9950X (Zen 5) 데스크톱 프로세서 테스트 결과, 19%에서 41% 사이의 성능 향상을 보였습니다:
최근 Eric Biggers가 수행한 다른 모든 AVX-512 최적화에 더해 정말 멋진 성능 향상입니다. 바라건대 이 패치가 가까운 시일 내에 메인라인 커널 (mainline kernel)에 반영되기를 바랍니다.