Kernel Linux 6.16 terá getrandom via vDSO para RISC-V com desempenho até 17x mais rápido

Escrito por
Emanuel Negromonte
Fundador do SempreUPdate. Acredita no poder do trabalho colaborativo, no GNU/Linux, Software livre e código aberto. É possível tornar tudo mais simples quando trabalhamos juntos, e...

A arquitetura RISC-V está prestes a receber uma importante melhoria de desempenho com a chegada do suporte à função getrandom() via vDSO (Virtual Dynamic Shared Object) no ciclo de desenvolvimento do Linux 6.16. A novidade foi implementada por Xi Ruoyao e já está integrada ao branch for-next da árvore principal do kernel RISC-V, aguardando inclusão na janela de merge de maio.

O que é o getrandom() via vDSO?

A função getrandom() é amplamente usada para gerar números aleatórios seguros em espaço de usuário. Quando chamada via syscall, ela impõe um custo de contexto entre usuário e kernel. Com a vDSO, é possível acessar esse recurso diretamente em espaço de usuário, reduzindo significativamente o tempo de execução — sem comprometer a segurança.

Desempenho surpreendente no RISC-V

De acordo com benchmarks apresentados junto ao commit 89079520cef6, o ganho de desempenho é expressivo:

MétodoTempo para 25 milhões de execuções
vDSO2,47 segundos
libc (tradicional)41,45 segundos
syscall direta41,04 segundos

Em operações mais intensas (25 milhões de execuções de blocos de 256 bytes), o vDSO concluiu em 162 segundos, contra 2.953 segundos usando libc e 2.796 via syscall. Isso representa uma melhoria de até 17x na performance.

Detalhes técnicos

A implementação conecta a função getrandom() genérica da vDSO ao código da arquitetura RISC-V, incluindo:

  • Suporte ao algoritmo ChaCha20,
  • Geração de blocos aleatórios sem uso de pilha (__arch_chacha20_blocks_nostack),
  • Testes de autovalidação integrados ao kernel,
  • Integração com a syscall __NR_getrandom.

Com isso, a RISC-V se junta a outras arquiteturas que já suportam essa funcionalidade de forma otimizada, como x86_64, ARM64 e LoongArch.

Quando estará disponível?

Salvo imprevistos durante os testes finais, essa melhoria será integrada oficialmente no Linux 6.16, com lançamento previsto para junho de 2025.

Compartilhe este artigo