Introduzidos com processadores “Sapphire Rapids” escaláveis Xeon de 4ª geração são vários novos aceleradores disponíveis em SKUs selecionados ou através da oferta Intel On Demand. Um dos desafios iniciais, no entanto, são as limitações iniciais de suporte ao software acelerador e muitos softwares de código aberto upstream (ou mesmo apenas generalizados) ainda não habilitados para fazer uso desses novos aceleradores. Intel trabalha no driver de compressão de criptografia IAA para Linux.
Uma das melhorias nessa frente foi os engenheiros da Intel trabalhando em um driver de compactação de criptografia IAA para o kernel para que o In-Memory Analytics Accelerator possa ser acessível de forma transparente aos recursos do kernel que fazem uso da API de criptografia.
Os últimos meses viram o IAA Crypto Compression Driver para o kernel Linux passar por meia dúzia de revisões até agora que ele trabalha seu caminho para a linha principal. Este novo driver torna o acelerador Intel IAA disponível através da API de criptografia do kernel e, por sua vez, pode ser usado pelo código do kernel direcionado a essa API, como Zswap e zRAM. O driver fornece versões sincronizadas e assíncronas do algoritmo DEFLATE implementado pelo hardware.
Intel continua trabalhando no driver de compressão de criptografia IAA para Linux
Embora esse driver abra casos de uso do kernel para o acelerador IAA, as notas de patch do driver reconhecem as dores de cabeça iniciais em torno da configuração dos aceleradores Sapphire Rapids, ou seja, ele ainda não estará pronto para uso ao inicializar uma pilha de software Linux capaz:
O hardware IAA é bastante complexo e geralmente requer um administrador experiente com compreensão suficientemente detalhada do hardware para configurá-lo antes que ele possa ser usado. Como mencionado na Documentação, isso normalmente requer o uso de uma ferramenta especial chamada accel-config para enumerar e configurar filas de trabalho, mecanismos, etc, embora isso também possa ser feito usando apenas arquivos sysfs.
A operação do driver espelha esse requisito e só permite que o hardware seja acessado por meio da camada de criptografia depois que o hardware tiver sido configurado e vinculado ao driver de criptografia IAA.
Como um subdriver IDXD, o driver de criptografia IAA essencialmente assume a propriedade do hardware até que ele seja entregue explicitamente pelo administrador. Isso ocorre automaticamente quando o administrador habilita a primeira fila de trabalho do IAA ou desabilita a última; Os algoritmos iaa_crypto (sincronização e assíncrona) são registrados quando a primeira fila de trabalho é habilitada e cancelados quando a última é desabilitada.
A sequência normal de operações normalmente seria:
configurar o hardware usando accel-config ou sysfs;
configurar o driver de criptografia iaa (veja abaixo);
configurar o subsistema, por exemplo, zswap/zram para usar o iaa_crypto executar a carga de trabalho.
Mas quando tudo está configurado e indo com este driver proposto, os resultados de desempenho são bastante dramáticos com o uso do IAA em comparação com o software puro:
No início deste mês, uma série de patches v6 para este driver de kernel foi enviada para revisão. Embora dado o tempo e ainda não sendo pego pelo ramo cryptodev.git, é improvável que este driver esteja pronto a tempo para o próximo ciclo Linux v6.5. Outro obstáculo foi potencialmente levantado na semana passada pelo mantenedor do subsistema de criptografia Linux, Herbert Xu:
Então você disse que enlatado não é compatível com o algoritmo genérico de desinsuflado. Isso significa que não há como descomprimir algo comprimido pelo algoritmo genérico de desinsuflado, e vice-versa sua saída comprimida não pode ser descompactada pelo desinflar genérico?
Não adicionamos um algoritmo à API de criptografia se a única implementação for por hardware. IOW se você estiver adicionando um novo algoritmo, então uma versão de software deve ser o primeiro patch.
Essa diferença na implementação de desinflar da Intel parece ser genuína. Os desenvolvedores do ClickHouse avisaram anteriormente em seu suporte Intel QPL que, se quisessem mover bancos de dados acelerados por Intel IAA entre hosts, você precisaria primeiro converter todos os dados antes de retirá-los do servidor. Nesse caso, se este driver for para ser mainlined, a Intel precisará fornecer uma implementação de software também para o kernel.