Diperkenalkan dengan prosesor”Sapphire Rapids”Xeon Scalable Generasi ke-4 adalah berbagai akselerator baru yang tersedia pada SKU tertentu atau melalui penawaran Intel On Demand. Salah satu tantangan awal yang ada adalah keterbatasan dukungan perangkat lunak akselerator awal dan banyak perangkat lunak open-source upstream (atau bahkan tersebar luas) belum diaktifkan untuk menggunakan akselerator baru ini. Salah satu peningkatan di bagian depan itu adalah para insinyur Intel yang mengerjakan driver kompresi kripto IAA untuk kernel sehingga In-Memory Analytics Accelerator dapat diakses secara transparan ke fitur-fitur kernel yang memanfaatkan API kripto.
Pengandar Kompresi Kripto IAA untuk kernel Linux dalam beberapa bulan terakhir mengalami setengah lusin revisi sejauh ini berjalan menuju arus utama. Driver baru ini membuat akselerator Intel IAA tersedia melalui kernel crypto API dan pada gilirannya dapat digunakan oleh kode kernel yang menargetkan API tersebut, seperti Zswap dan zRAM. Driver menyediakan versi sinkronisasi dan asinkron dari algoritme DEFLATE yang diterapkan oleh perangkat keras.
Sementara driver ini akan membuka kasus penggunaan kernel untuk akselerator IAA, catatan tempel driver mengakui kesulitan awal saat menyiapkan akselerator Sapphire Rapids, yaitu masih tidak akan out-of-the-box ketika mem-boot tumpukan perangkat lunak Linux yang mampu:
“Hardware IAA cukup kompleks dan umumnya memerlukan administrator berpengetahuan dengan pemahaman yang cukup rinci tentang perangkat keras untuk mengatur sebelum dapat digunakan. Seperti yang disebutkan dalam Dokumentasi, ini biasanya membutuhkan penggunaan alat khusus yang disebut accel-config untuk menghitung dan mengonfigurasi antrean kerja IAA, mesin, dll, meskipun ini juga dapat dilakukan hanya dengan menggunakan file sysfs.
Pengoperasian driver mencerminkan persyaratan ini dan hanya memungkinkan perangkat keras untuk diakses melalui lapisan kripto setelah perangkat keras dikonfigurasi dan diikat ke driver kripto IAA. Sebagai sub-driver IDXD, driver kripto IAA pada dasarnya mengambil alih kepemilikan perangkat keras sampai diserahkan secara eksplisit oleh administrator. Hal ini terjadi secara otomatis saat administrator mengaktifkan workqueue IAA pertama atau menonaktifkan yang terakhir; algoritme iaa_crypto (sinkronisasi dan async) didaftarkan saat antrian kerja pertama diaktifkan, dan dibatalkan pendaftarannya saat yang terakhir dinonaktifkan.
Urutan normal operasi biasanya adalah:
konfigurasi perangkat keras menggunakan accel-config atau sysfs
konfigurasi driver iaa crypto (lihat di bawah)
konfigurasi subsistem mis. zswap/zram untuk menggunakan iaa_crypto algo
menjalankan beban kerja”
Namun ketika semuanya sudah diatur dan berjalan dengan driver yang diusulkan ini, hasil kinerja cukup dramatis dengan IAA penggunaan dibandingkan dengan perangkat lunak murni:
Awal bulan ini seri patch v6 untuk driver kernel ini telah dikirim untuk ditinjau. Meskipun mengingat waktunya dan belum diambil oleh cabang cryptodev.git, sepertinya driver ini tidak akan siap tepat waktu untuk siklus Linux v6.5 yang akan datang. Kendala lain berpotensi diangkat minggu lalu oleh pengelola subsistem kripto Linux Herbert Xu:
Jadi Anda mengatakan bahwa kaleng tidak kompatibel dengan algoritme deflate generik. Apakah itu berarti bahwa tidak ada cara untuk mendekompresi sesuatu yang dikompresi oleh algoritme deflate generik, dan sebaliknya output terkompresi tidak dapat didekompresi oleh deflate generik ?
Kami tidak menambahkan algoritme ke API Kripto jika satu-satunya implementasi adalah dengan perangkat keras. TKI jika Anda menambahkan algoritme baru, maka versi perangkat lunak harus menjadi tambalan pertama.
Perbedaan dalam penerapan deflate Intel ini tampaknya asli. Pengembang ClickHouse sebelumnya memperingatkan dalam dukungan Intel QPL mereka bahwa jika ingin memindahkan basis data yang dipercepat Intel IAA antar host, Anda harus mengonversi semua data terlebih dahulu sebelum menghapusnya dari server. Dalam hal ini jika driver ini akan menjadi arus utama, Intel juga perlu menyediakan implementasi perangkat lunak untuk kernel.