- El trabajo de port de RISC-V para Fedora Linux lleva en marcha unos 3 meses, y la mayoría de los paquetes ya fueron compilados para Fedora 43
- Actualmente, el hardware RISC-V muestra una velocidad de compilación extremadamente lenta; al compilar el mismo paquete puede tardar más de 5 veces que x86_64
- Para ser adoptado como arquitectura oficial de Fedora, se necesita hardware de clase servidor capaz de compilar binutils en menos de 1 hora
- Los retrasos en las compilaciones provocan quejas de los mantenedores de paquetes, e incluso se menciona la posibilidad de que RISC-V quede fuera
- En el futuro, planean mejorar el problema de velocidad con la compilación de Fedora 44 y la incorporación de builders más rápidos, además de mantener la unificación del kernel y LTO desactivado
Estado del port de Fedora a RISC-V
- El trabajo de port de RISC-V para Fedora Linux comenzó hace unos 3 meses y ha habido varios cambios
- La mayoría de los elementos del tracker de Fedora RISC-V ya fueron resueltos y actualmente solo quedan 17 elementos en estado NEW
- Se toma el código fuente de los paquetes de Fedora y se compila con el comando
fedpkg mockbuild -r fedora-43-riscv64
- Hasta ahora se han enviado 86 Pull Requests para paquetes, la mayoría ya fue fusionada, y la compilación para Fedora 43 está completa
- Se pueden realizar compilaciones adicionales siguiendo la etiqueta ‘f43-updates’
-
Problema de velocidad de compilación en RISC-V
- El hardware RISC-V actualmente muestra una velocidad de compilación extremadamente lenta
- El tiempo de compilación de
binutils 2.45.1-4.fc43 se midió en 143 minutos para riscv64, 36 minutos para aarch64 y 29 minutos para x86_64
- La placa StarFive VisionFive 2 usada ofrece buen soporte de drivers, pero su velocidad es lenta
- Al compilar el mismo paquete en la placa Milk-V Megrez, toma 58 minutos
- Actualmente, las compilaciones de RISC-V tienen LTO (link-time optimization) desactivado, como medida para reducir el uso de memoria y el tiempo de compilación
- Los builders cuentan con 4 a 8 núcleos y 8 a 32 GB de RAM, y su rendimiento se evalúa como de nivel Arm Cortex-A55
- En el futuro, se espera mejora con el SoC UltraRISC UR-DP1000 (hasta 64 GB de RAM) y sistemas basados en SpacemiT K3 (hasta 32 GB de RAM)
-
Requisitos para entrar como arquitectura oficial de Fedora
- Para ser incluida como arquitectura oficial de Fedora, se necesita hardware capaz de compilar el paquete binutils en menos de 1 hora
- También se requiere alcanzar una velocidad comparable a otras arquitecturas incluso con LTO activado a nivel global del sistema
- Como los resultados de compilación solo se reflejan en el repositorio cuando todas las arquitecturas terminan, los builders lentos provocan quejas de los mantenedores de paquetes
- En el pasado hubo quejas por la velocidad de los builders AArch64, y algunos desarrolladores mencionaron la posibilidad de excluir a RISC-V
- En el futuro, los builders deberán ser sistemas tipo servidor montables en rack y con administración remota; un entorno basado en SBC con reinicio manual no es adecuado
- Si no se cumplen estas condiciones, será imposible que Fedora adopte oficialmente a RISC-V de 64 bits como arquitectura oficial
-
Pruebas locales usando QEMU
- Debido a los largos tiempos de compilación, las pruebas locales mediante emulación con QEMU resultan útiles
- En un desktop AArch64 de 80 núcleos, es posible compilar el paquete
llvm15 en unas 4 horas usando emulación riscv64 en espacio de usuario con QEMU
- Compilar el mismo paquete en el builder Banana Pi BPI-F3 toma 10.5 horas
- Como el paquete LLVM aprovecha tanto los núcleos como la memoria, se espera una mejora de rendimiento en sistemas basados en Ampere One de 192/384 núcleos
- QEMU se usa solo para compilación y pruebas locales, y Fedora solo realiza compilaciones nativas
-
Planes a futuro
- Está previsto iniciar la compilación de Fedora Linux 44
- El objetivo es que todos los builders usen la misma imagen de kernel; actualmente hay una mezcla de versiones de kernel
- LTO seguirá desactivado
- Para resolver el problema de velocidad, planean incorporar builders nuevos y más rápidos, y asignar algunos de los paquetes más pesados a esos builders
1 comentarios
Comentarios en Hacker News
En vez de culpar a la ISA en sí, creen que el problema está en la implementación en silicio y en el software sin optimizaciones específicas por arquitectura
RISC-V eventualmente también va a madurar
ARM al principio estaba orientado a la velocidad, luego cambió hacia la eficiencia energética y triunfó en el mercado embebido, y ahora parece haber vuelto a priorizar la velocidad
Por ejemplo, hay casos como LLVM issue #150263, #141488
También está el hecho de que el tamaño de página está fijado en 4KiB, lo que limita el rendimiento frente a ARM
ARM fue rápido, luego lento y después volvió a ser rápido, pero RISC-V todavía no ha demostrado competitividad en el segmento de alto rendimiento
Las implementaciones hechas por equipos pequeños son impresionantes, pero para móviles, desktop y servidores sigue faltando mucho
En la práctica, lo clave es el diseño analógico VLSI de cosas como la estructura de caché y las interfaces DDR·PCI, y casi no hay equipos que hagan eso bien
Además, todas las empresas quieren convertirse en un “vendor de RISC-V de alto rendimiento”, pero nadie quiere encargarse del “mercado embebido”
En EE. UU., en vez de fabricar chips directamente, el modelo es vender IP, así que si quieres conseguir hardware real terminas dependiendo de vendors chinos
Un ejemplo representativo es cómo la arquitectura Netburst de Pentium 4 llegó a su límite, y la arquitectura Core, derivada de núcleos de bajo consumo, terminó convirtiéndose en la principal de Intel
La historia de ARM muestra un recorrido parecido
Según Steve Furber, se habían olvidado de conectarle la alimentación y aun así el código llegaba a ejecutarse por lo eficiente que era
Comparten una corrección a un post de blog escrito por un colega
En el sistema de builds de Fedora RISC-V, completaron una compilación de binutils en 67 minutos con una Milk-V “Megrez”, una mejora importante frente al registro anterior de 143 minutos
Actualmente, las placas de desarrollo más rápidas no son Banana Pi sino la SiFive “HiFive P550” y la UltraRISC “DP1000”
La presentación de FOSDEM “Fedora on RISC-V: state of the arch” también cubre benchmarks relacionados
La prueba de Marcin se hizo en una StarFive “VisionFive 2”, una placa estable pero bastante lenta
Para enlazar 4 binarios al mismo tiempo al compilar gcc, hacen falta al menos 16GB y además activar swap para que funcione de forma estable
En la VisionFive 2 hay que compilar con
-j1o-j2, así que el tiempo termina aumentando entre 2 y 4 vecesEs más eficiente usar un mejor linker (reemplazo de ld) o, como en el sistema de build de LLVM, configurar por separado cuántos enlaces paralelos se permiten
A ARM le tomó 40 años llegar a donde está hoy, y RISC-V apenas tiene 15 años
Dicen que este año Tenstorrent planea lanzar una plataforma de servidor basada en RVA23, así que vale la pena seguirlo de cerca
Al final, la clave es que los vendors de hardware saquen silicio de alto rendimiento
felix está compilando el repositorio de Arch Linux RISC-V con una Milk-V Pioneer
Creen que las sanciones contra SOPHGO también influyeron en la desaceleración del desarrollo
La Milk-V Oasis basada en el SG2380 de SOPHGO fue cancelada, pero parecía un SoC muy prometedor
Los chips de esa empresa soportaban una arquitectura dual capaz de alternar entre ARM y RISC-V
Ver repositorio Arch RISC-V, artículo relacionado
Se preguntan por qué el software para RISC-V necesariamente tiene que compilarse en un sistema RISC-V
Como el compilador incluye en el código la información de la arquitectura de destino, en teoría debería poder hacerse también desde otro sistema
Fedora actualmente solo soporta builds nativos, y sus cross-compilers son únicamente versiones bare-metal para firmware
Además, como automatizar las pruebas es difícil, los builds nativos con pruebas en hardware real son más realistas
AArch64 también era lento al principio, pero ahora compilar Qt4 puede terminar en apenas 18 minutos
Según el lenguaje se puede resolver, pero el ecosistema de C/C++ es especialmente complejo
Por eso la mayoría termina compilando en VM o en hardware objetivo real
Desde LLVM eso se volvió posible, pero para probar sigue haciendo falta un emulador
También aparece la opinión de que “¿por qué no simplemente hacer cross-compile desde un servidor x86_64?”
Hace un año vieron en Mastodon un post que decía que “el hardware RISC-V más rápido es más lento que QEMU”
RISC-V se está expandiendo a varios ámbitos, pero en cómputo de alto rendimiento sigue siendo débil
Encima, la empresa desarrolladora desapareció por las sanciones de EE. UU.
La compilación cruzada no es imposible, pero en las etapas
%instally%checkel problema es ejecutar las pruebasPor ejemplo, en el PR del paquete rpy hubo que desactivar las pruebas vectoriales en RISC-V
Se puede separar build y testing, pero el ahorro de tiempo no compensa mucho la complejidad
Ya en un hilo de LWN de 2012 (link) se discutía oponerse a la compilación cruzada
El resultado de que i686 sea 14% más rápido que x86_64 parece dudoso
Normalmente x86_64 es más rápido, gracias al mayor número de registros y a las instrucciones vectoriales
Aun así, como el compilador intenta hacer más optimizaciones, el tiempo de build también podría alargarse
Es posible que algo parecido ocurra en RISC-V
Como el texto no especifica qué CPU RISC-V se usó, la comparación queda ambigua
La Milk-V Pioneer es una excepción con 64 núcleos y 128GB de RAM, pero usa una arquitectura vieja y además es cara