- O trabalho de portar o Fedora Linux para RISC-V está em andamento há cerca de 3 meses, e a maioria dos pacotes já foi compilada para o Fedora 43
- Atualmente, o hardware RISC-V apresenta velocidade de compilação extremamente lenta, levando até mais de 5 vezes o tempo do x86_64 para compilar o mesmo pacote
- Para ser adotado como arquitetura oficial do Fedora, é necessário hardware de classe servidor capaz de compilar o binutils em menos de 1 hora
- O atraso nas compilações provoca reclamações dos mantenedores de pacotes, e chegou a ser mencionada a possibilidade de excluir o RISC-V
- No futuro, há planos de melhorar o problema de desempenho com as compilações do Fedora 44 e a introdução de builders mais rápidos, além de manter a unificação do kernel e o LTO desativado
Progresso do porte do Fedora para RISC-V
- O trabalho de portar o Fedora Linux para RISC-V começou há cerca de 3 meses, e várias mudanças ocorreram nesse período
- A maior parte dos itens no rastreador do Fedora RISC-V já foi resolvida, e atualmente restam apenas 17 itens no estado NEW
- Os fontes dos pacotes do Fedora são obtidos e a compilação é feita com o comando
fedpkg mockbuild -r fedora-43-riscv64
- Até agora, foram enviados 86 Pull Requests para pacotes, a maioria já foi mesclada, e a compilação para o Fedora 43 foi concluída
- Também é possível continuar compilações adicionais seguindo a tag ‘f43-updates’
-
Problema de velocidade de compilação no RISC-V
- O hardware RISC-V atualmente mostra velocidade de compilação extremamente lenta
- O tempo de compilação do
binutils 2.45.1-4.fc43 foi medido em 143 minutos no riscv64, 36 minutos no aarch64 e 29 minutos no x86_64
- A placa StarFive VisionFive 2 usada tem bom suporte de drivers, mas é lenta
- Ao compilar o mesmo pacote na placa Milk-V Megrez, o processo levou 58 minutos
- Atualmente, as compilações em RISC-V estão com o LTO (link-time optimization) desativado, como medida para reduzir o uso de memória e o tempo de compilação
- Os builders têm 4 a 8 núcleos e 8 a 32 GB de RAM, com desempenho avaliado no nível de um Arm Cortex-A55
- Para o futuro, espera-se melhora com o SoC UltraRISC UR-DP1000 (até 64 GB de RAM) e com sistemas baseados no SpacemiT K3 (até 32 GB de RAM)
-
Requisitos para entrar como arquitetura oficial do Fedora
- Para ser incluído como arquitetura oficial do Fedora, é necessário hardware capaz de compilar o pacote binutils em menos de 1 hora
- Também é preciso garantir velocidade equivalente à de outras arquiteturas mesmo com o LTO ativado em todo o sistema
- Como os resultados de compilação só vão para o repositório quando todas as arquiteturas terminam, builders lentos provocam reclamações dos mantenedores de pacotes
- Já houve reclamações no passado por causa da lentidão dos builders AArch64, e alguns desenvolvedores mencionaram a possibilidade de excluir o RISC-V
- No futuro, os builders precisarão ser sistemas de servidor com montagem em rack e gerenciamento remoto; ambientes baseados em SBC com reinicialização manual não são adequados
- Se essas condições não forem atendidas, não será possível adotar o RISC-V de 64 bits como arquitetura oficial do Fedora
-
Testes locais com QEMU
- Como os tempos de compilação são longos, testes locais por emulação com QEMU são úteis
- Em um desktop AArch64 de 80 núcleos, é possível compilar o pacote
llvm15 em cerca de 4 horas usando emulação riscv64 em espaço de usuário no QEMU
- O mesmo pacote leva 10,5 horas para ser compilado em um builder Banana Pi BPI-F3
- Como o pacote LLVM usa intensamente tanto núcleos quanto memória, espera-se melhor desempenho em um sistema baseado no Ampere One com 192/384 núcleos
- O QEMU é usado apenas para compilação e testes locais; o Fedora realiza apenas compilações nativas
-
Planos futuros
- Está previsto o início das compilações do Fedora Linux 44
- O objetivo é usar a mesma imagem de kernel em todos os builders, já que hoje há mistura de versões de kernel
- O LTO continuará desativado
- Para resolver o problema de desempenho, há planos de introduzir builders novos e mais rápidos e de atribuir alguns dos pacotes mais pesados a esses builders
1 comentários
Comentários do Hacker News
Em vez de culpar a própria ISA, acho que o problema está na implementação em silício e no software sem otimizações específicas para cada arquitetura
No fim, o RISC-V também vai evoluir
O ARM também era focado em velocidade no começo, depois mudou de direção para eficiência energética e teve sucesso no mercado embarcado, e agora mostra um movimento de volta ao foco em velocidade
Por exemplo, há casos como LLVM issue #150263, #141488
Além disso, o tamanho de página fixo de 4KiB também limita o desempenho em comparação com o ARM
O ARM foi rápido, ficou lento e depois voltou a ficar rápido, mas o RISC-V ainda não mostrou competitividade nem uma vez na faixa de alto desempenho
Implementações feitas por equipes pequenas são impressionantes, mas em nível de mobile, desktop e servidor ainda faltam muito
Na prática, o essencial é a projetização analógica em VLSI de coisas como estrutura de cache e interfaces DDR·PCI, e quase não há equipes que façam isso direito
Além disso, toda empresa quer virar um “vendor de RISC-V de alto desempenho”, mas ninguém quer assumir o “mercado embarcado”
Nos EUA, a realidade é que, em vez de fabricar chips diretamente, vende-se apenas IP, então para conseguir hardware de verdade é preciso depender de vendors chineses
Um caso representativo é o da arquitetura Netburst do Pentium 4, que bateu no limite, e da arquitetura Core, derivada de núcleos de baixo consumo, que virou a principal linha da Intel
A história do ARM mostra um fluxo parecido
Segundo Steve Furber, eles eram tão eficientes que chegaram a executar código mesmo quando esqueceram de ligar a alimentação
Compartilho uma correção a um post de blog escrito por um colega
No sistema de build RISC-V do Fedora, o build do binutils foi concluído em 67 minutos no Milk-V “Megrez”, uma grande melhora em relação ao recorde anterior de 143 minutos
Atualmente, as dev boards mais rápidas não são a Banana Pi, e sim a SiFive “HiFive P550” e a UltraRISC “DP1000”
A apresentação do FOSDEM “Fedora on RISC-V: state of the arch” também aborda benchmarks relacionados
O teste do Marcin foi executado em uma StarFive “VisionFive 2”, que é estável, mas relativamente lenta
Para linkar 4 binários ao mesmo tempo durante o build do gcc, são necessários pelo menos 16GB, e é preciso ativar swap para funcionar com estabilidade
Na VisionFive 2, é preciso fazer o build com
-j1ou-j2, então o tempo aumenta de 2 a 4 vezesÉ mais eficiente usar um linker melhor (substituto do ld) ou, como no sistema de build do LLVM, definir separadamente o número de links paralelos
O ARM levou 40 anos para chegar onde está hoje, e o RISC-V ainda tem só 15 anos
Neste ano, a Tenstorrent deve lançar uma plataforma de servidor baseada em RVA23, então vale a pena acompanhar
No fim, a chave é que os vendors de hardware lancem silício de alto desempenho
O felix está compilando o repositório Arch Linux RISC-V com um Milk-V Pioneer
Acho que a lentidão do desenvolvimento também se deve às sanções contra a SOPHGO
O Milk-V Oasis baseado no SG2380 da SOPHGO teve o lançamento cancelado, mas era um SoC muito promissor
Os chips dessa empresa suportavam uma arquitetura dupla com alternância entre ARM/RISC-V
Consulte o repositório Arch RISC-V e a matéria relacionada
Fico pensando por que o software para RISC-V precisa necessariamente ser compilado em um sistema RISC-V
Como o compilador embute no código as informações da arquitetura-alvo, em teoria não deveria ser possível fazer isso também em outros sistemas?
O Fedora atualmente só dá suporte a builds nativos, e seus compiladores cruzados existem apenas na versão bare-metal para firmware
Além disso, como a automação de testes é difícil, o build nativo com testes em hardware real é mais realista
O AArch64 também era lento no começo, mas hoje evoluiu a ponto de um build do Qt4 terminar em 18 minutos
Dá para resolver dependendo da linguagem, mas o ecossistema C/C++ é especialmente complexo
Por isso, a maioria compila em VM ou no hardware-alvo real
Depois do LLVM isso passou a ser possível, mas ainda é preciso um emulador para testar
Também há a opinião de que “não bastaria fazer cross-compilation em um servidor x86_64?”
Há um ano vi no Mastodon uma postagem dizendo que “o hardware RISC-V mais rápido é mais lento que o QEMU”
Embora o RISC-V esteja se espalhando por várias áreas, ele ainda é fraco em computação de alto desempenho
Além disso, a empresa desenvolvedora sumiu por causa das sanções dos EUA
Não é que cross-compilation seja impossível, mas a execução de testes nas etapas
%installe%checké o problemaPor exemplo, no PR do pacote rpy, foi necessário desativar os testes vetoriais no RISC-V
Dá para separar build e testes, mas a economia de tempo não é tão grande em relação à complexidade
Na thread da LWN de 2012 (link), já havia discussões contrárias à cross-compilation
O resultado de que i686 é 14% mais rápido que x86_64 parece suspeito
Normalmente o x86_64 é mais rápido, graças ao aumento no número de registradores e às instruções vetoriais
Ainda assim, como o compilador pode tentar mais otimizações, o tempo de build pode acabar ficando maior
É possível que haja um fenômeno parecido no RISC-V
Como o texto não especifica qual CPU RISC-V foi usada, a comparação fica ambígua
O Milk-V Pioneer é uma exceção, com 64 núcleos e 128GB de RAM, mas usa uma arquitetura antiga e tem preço alto