AVX-512 optimalizáció Linux RAID-hez: akár 41%-os gyorsulás AMD Ryzen 9 9950X-en

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

A Google-nál dolgozó Eric Biggers az elmúlt években több komoly Intel/AMD x86_64 optimalizáción is dolgozott. Különösen sokat foglalkozott a Linux kernel kriptográfiai kódjának AVX-512 optimalizálásával, ami a közelmúltban több látványos kernel-szintű fejlesztést hozott. Most egy újabb ígéretes AVX-512 optimalizációval állt elő, ezúttal a szoftveres RAID kódhoz.

Biggers egy AVX-512-re optimalizált xor_gen() függvényt írt a RAID kódhoz. A Linux kernel xor_gen() függvénye a paritásblokkok előállítására és ellenőrzésére szolgál, például RAID5/RAID6 esetén. A mostani javítócsomaghoz fűzött megjegyzésében részletezte a megvalósítást, és hogy az AMD Zen 4 és újabb, Intel Sapphire Rapids és újabb, illetve kliens oldalon az Intel Rocket Lake vagy a közelgő Nova Lake generációkat célozza.

„Adjunk hozzá egy xor_gen() megvalósítást AVX-512 használatával.

512 bites vektorokat, vagyis ZMM regisztereket használ. Emellett a vpternlogq utasítást is beveti, ahol lehet, három bemenetű XOR műveletekhez.

Az x86_64 CPU-kon akkor engedélyezett, ha elérhető az AVX512F és nem áll fenn a PREFER_YMM. A gyakorlatban ez a következőket jelenti:

- AMD Zen 4 és újabb (kliens és szerver)

- Intel Sapphire Rapids és újabb (szerver)

- Intel Rocket Lake (kliens)

- Intel Nova Lake és újabb (kliens)

A !PREFER_YMM feltétel kizárja az Intel Skylake Server és Intel Ice Lake régebbi AVX-512 megvalósításait. Ezek ugyan futtatni tudnák ezt a kódot, de ismerten túlságosan agresszíven visszaveszik az órajelet, ha ZMM regisztereket használnak. Ugyanezt az elvet követi a kriptográfiai és a CRC kód is.”

Az igazán izgalmas rész az AVX-512-es megvalósításból kihozott teljesítmény. Egy AMD Ryzen 9 9950X (Zen 5) asztali processzoron végzett tesztekben 19–41% közötti gyorsulást mértek:

Ez kifejezetten látványos fejlesztés, főleg ha figyelembe vesszük azokat az AVX-512 optimalizációkat is, amelyeket Eric Biggers az utóbbi időben már beletett a kódba. Remélhető, hogy ez a javítócsomag a közeljövőben bekerül a mainline kernel-ba.