Wraz ze skalowalnymi procesorami Xeon „Sapphire Rapids” czwartej generacji wprowadzono różne nowe akceleratory dostępne w wybranych jednostkach SKU lub w ramach oferty Intel On Demand. Jednym z początkowych wyzwań są jednak ograniczenia obsługi wczesnego oprogramowania akceleracyjnego oraz wiele nadrzędnych programów typu open source (lub nawet po prostu szeroko rozpowszechnionych), które nie są jeszcze w stanie korzystać z tych nowych akceleratorów. Jednym z ulepszeń na tym froncie była praca inżynierów Intela nad sterownikiem kompresji kryptograficznej IAA dla jądra, dzięki czemu In-Memory Analytics Accelerator może być w przejrzysty sposób dostępny dla funkcji jądra korzystających z kryptograficznego API.
W ciągu ostatnich kilku miesięcy sterownik IAA Crypto Compression Driver dla jądra Linuksa przeszedł pół tuzina poprawek, dopóki nie znalazł się w wersji głównej. Ten nowy sterownik udostępnia akcelerator Intel IAA za pośrednictwem kryptograficznego API jądra i z kolei może być używany przez kod jądra ukierunkowany na ten interfejs API, taki jak Zswap i zRAM. Sterownik udostępnia zarówno wersje synchronizacji, jak i asynchronii algorytmu DEFLATE zaimplementowanego przez sprzęt.
Chociaż ten sterownik otworzy przypadki użycia jądra dla akceleratora IAA, informacje o łatce sterownika uwzględniają początkowe problemy związane z konfiguracją akceleratorów Sapphire Rapids, tzn. nadal nie będzie gotowy do użycia przy uruchamianiu odpowiedniego stosu oprogramowania Linux:
„Sprzęt IAA jest dość złożony i generalnie wymaga dobrze poinformowanego administratora z wystarczająco szczegółową znajomością sprzętu, aby ustawić zanim będzie można go użyć.Jak wspomniano w dokumentacji, zwykle wymaga to użycia specjalnego narzędzia o nazwie accel-config do wyliczenia i skonfigurowania kolejek roboczych IAA, silników itp., chociaż można to również zrobić przy użyciu tylko plików sysfs.
Działanie sterownika odzwierciedla to wymaganie i umożliwia dostęp do sprzętu za pośrednictwem warstwy kryptograficznej dopiero po skonfigurowaniu sprzętu i powiązaniu go ze sterownikiem kryptograficznym IAA. Jako sterownik podrzędny IDXD, sterownik kryptograficzny IAA zasadniczo przejmuje własność sprzętu do czasu jego jednoznacznego zrzeczenia się przez administratora. Dzieje się to automatycznie, gdy administrator włączy pierwszą kolejkę roboczą IAA lub wyłączy ostatnią; algorytmy iaa_crypto (synchronizacja i asynchronizacja) są rejestrowane, gdy pierwsza kolejka robocza jest włączona, i wyrejestrowywana, gdy ostatnia jest wyłączona.
Normalna sekwencja operacji wygląda następująco:
skonfiguruj sprzęt za pomocą accel-config lub sysfs
skonfiguruj sterownik iaa crypto (patrz poniżej)
skonfiguruj podsystem np. zswap/zram, aby użyć algo iaa_crypto
uruchom obciążenie”
Ale kiedy wszystko jest skonfigurowane i działa z tym proponowanym sterownikiem, wyniki wydajności w przypadku IAA są dość dramatyczne użycie w porównaniu z czystym oprogramowaniem:
Wcześniej w tym miesiącu seria poprawek do wersji 6 dla tego sterownika jądra został wysłany do przeglądu. Chociaż biorąc pod uwagę czas i brak jeszcze pobrania przez gałąź cryptodev.git, jest mało prawdopodobne, że ten sterownik będzie gotowy na czas dla nadchodzącego cyklu Linuksa v6.5. Kolejna przeszkoda został potencjalnie podniesiony w zeszłym tygodniu przez Herberta Xu, opiekuna podsystemu kryptograficznego Linuksa:
Więc powiedziałeś, że konserwa nie jest kompatybilna z ogólnym algorytmem deflate. Czy to oznacza, że nie ma sposobu, aby zdekompresować coś skompresowanego przez ogólny algorytm deflate i odwrotnie, jego skompresowane dane wyjściowe nie mogą zostać zdekompresowane przez ogólny algorytm deflate ?
Nie dodajemy algorytmu do Crypto API, jeśli jedyną implementacją jest sprzęt. IOW, jeśli dodajesz nowy algorytm, pierwszą poprawką musi być wersja oprogramowania.
Ta różnica w implementacji funkcji deflate firmy Intel wydaje się być autentyczna. Deweloperzy ClickHouse ostrzegali wcześniej w swoim wsparciu Intel QPL, że jeśli chcą przenosić bazy danych z akceleracją Intel IAA między hostami, muszą najpierw przekonwertować wszystkie dane przed usunięciem ich z serwera. W takim przypadku, jeśli ten sterownik ma przejść do głównego nurtu, Intel będzie musiał zapewnić implementację oprogramowania również dla jądra.