
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étodo | Tempo para 25 milhões de execuções |
---|---|
vDSO | 2,47 segundos |
libc (tradicional) | 41,45 segundos |
syscall direta | 41,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.