- Die RISC-V-Portierung von Fedora Linux läuft seit etwa drei Monaten, und die meisten Pakete wurden bereits für Fedora 43 gebaut
- Aktuelle RISC-V-Hardware zeigt sehr langsame Build-Geschwindigkeiten; beim Bau desselben Pakets wird im Vergleich zu x86_64 teils mehr als die fünffache Zeit benötigt
- Um als offizielle Fedora-Architektur aufgenommen zu werden, ist servertaugliche Hardware erforderlich, die
binutils in weniger als einer Stunde bauen kann
- Die Build-Verzögerungen sorgen für Unzufriedenheit bei Paket-Maintainern, und es wird auch die Möglichkeit erwähnt, dass RISC-V ausgeschlossen werden könnte
- Künftig sollen die Fedora-44-Builds und schnellere Builder das Geschwindigkeitsproblem verbessern; außerdem sind eine Vereinheitlichung des Kernels und die Beibehaltung der deaktivierten LTO geplant
Fortschritt bei der Fedora-RISC-V-Portierung
- Die RISC-V-Portierung von Fedora Linux läuft seit etwa drei Monaten, und in dieser Zeit hat es mehrere Änderungen gegeben
- Die meisten Einträge im Fedora-RISC-V-Tracker wurden abgearbeitet; derzeit verbleiben nur noch 17 Einträge mit dem Status NEW
- Fedora-Paketquellen werden übernommen und mit dem Befehl
fedpkg mockbuild -r fedora-43-riscv64 gebaut
- Bisher wurden 86 Pull Requests für Pakete eingereicht, die größtenteils bereits gemergt wurden; die Builds für Fedora 43 sind abgeschlossen
- Zusätzliche Builds können anhand des Tags „f43-updates“ weiter durchgeführt werden
-
Problem bei der RISC-V-Build-Geschwindigkeit
- RISC-V-Hardware zeigt derzeit sehr langsame Build-Geschwindigkeiten
- Die Build-Zeit für
binutils 2.45.1-4.fc43 wurde mit 143 Minuten auf riscv64, 36 Minuten auf aarch64 und 29 Minuten auf x86_64 gemessen
- Das verwendete StarFive VisionFive 2 Board bietet eine gute Treiberunterstützung, ist aber langsam
- Beim Bau desselben Pakets auf dem Milk-V Megrez Board wurden 58 Minuten benötigt
- Aktuell erfolgen RISC-V-Builds mit deaktivierter LTO (Link Time Optimization), um Speicherverbrauch und Build-Zeit zu senken
- Die Builder verfügen über 4 bis 8 Kerne und 8 bis 32 GB RAM; ihre Leistung wird auf das Niveau eines Arm Cortex-A55 geschätzt
- Als Hoffnungsträger für Verbesserungen gelten künftig der UltraRISC UR-DP1000 SoC (bis zu 64 GB RAM) und SpacemiT-K3-basierte Systeme (bis zu 32 GB RAM)
-
Voraussetzungen für die Aufnahme als offizielle Fedora-Architektur
- Um als offizielle Fedora-Architektur aufgenommen zu werden, ist Hardware nötig, die das Paket
binutils in weniger als einer Stunde bauen kann
- Auch bei systemweit aktivierter LTO muss eine Geschwindigkeit auf dem Niveau anderer Architekturen erreicht werden
- Build-Ergebnisse werden erst dann ins Repository übernommen, wenn alle Architekturen fertig sind; langsame Builder führen daher zu Unzufriedenheit bei Paket-Maintainern
- Schon früher gab es Beschwerden über die Geschwindigkeit von AArch64-Buildern, und einige Entwickler erwähnten die Möglichkeit, RISC-V auszuschließen
- Zukünftige Builder müssen serverartige Systeme sein, die sich ins Rack einbauen und remote verwalten lassen; SBC-basierte Umgebungen mit manuellem Reboot sind ungeeignet
- Werden diese Bedingungen nicht erfüllt, ist eine Aufnahme von RISC-V als offizielle 64-Bit-Architektur in Fedora nicht möglich
-
Lokale Tests mit QEMU
- Wegen der langen Build-Zeiten sind lokale Tests mit QEMU-Emulation nützlich
- Auf einem AArch64-Desktop mit 80 Kernen lässt sich das Paket
llvm15 per QEMU-Userspace-riscv64-Emulation in rund 4 Stunden bauen
- Dasselbe Paket benötigt auf einem Banana Pi BPI-F3 Builder 10,5 Stunden
- Da LLVM-Pakete sowohl Kerne als auch Speicher stark ausnutzen, werden Leistungssteigerungen auf Ampere-One-basierten Systemen mit 192/384 Kernen erwartet
- QEMU wird nur für lokale Builds und Tests genutzt; Fedora führt ausschließlich native Builds durch
-
Ausblick
- Der Start der Fedora-Linux-44-Builds ist geplant
- Ziel ist, auf allen Buildern dasselbe Kernel-Image zu verwenden; derzeit sind noch verschiedene Kernel-Versionen im Einsatz
- LTO soll weiterhin deaktiviert bleiben
- Zur Lösung der Geschwindigkeitsprobleme ist die Einführung neuer und schnellerer Builder geplant; einige schwere Pakete sollen diesen Buildern zugewiesen werden
1 Kommentare
Hacker-News-Kommentare
Ich denke, man sollte weniger die ISA selbst verantwortlich machen als vielmehr die Silizium-Implementierung und die Software, der architekturspezifische Optimierungen fehlen.
Auch RISC-V wird sich letztlich weiterentwickeln.
ARM war anfangs ebenfalls auf Geschwindigkeit ausgerichtet, wechselte später aber in Richtung Energieeffizienz, war damit im Embedded-Markt erfolgreich und scheint inzwischen wieder stärker auf Geschwindigkeit zu setzen.
Beispiele dafür sind etwa LLVM Issue #150263 und #141488.
Außerdem ist die Seitengröße fest auf 4 KiB gelegt, was die Leistung im Vergleich zu ARM einschränken kann.
ARM war schnell, wurde dann langsamer und wurde später wieder schnell, aber RISC-V hat bislang noch nie im High-Performance-Bereich echte Konkurrenzfähigkeit gezeigt.
Implementierungen kleiner Teams sind beeindruckend, doch für Mobile-, Desktop- und Server-Klassen reicht es weiterhin nicht.
In der Praxis sind Dinge wie Cache-Strukturen sowie analoges VLSI-Design für DDR- und PCI-Interfaces entscheidend, und es gibt kaum Teams, die das wirklich beherrschen.
Außerdem wollen alle Firmen „High-Performance-RISC-V-Anbieter“ werden, aber niemand will den Embedded-Markt übernehmen.
In den USA werden Chips eher nicht selbst produziert, sondern es wird nur IP verkauft, sodass man für reale Hardware faktisch auf chinesische Anbieter angewiesen ist.
Ein typisches Beispiel ist, wie die Netburst-Architektur des Pentium 4 an ihre Grenzen stieß und die aus stromsparenden Kernen abgeleitete Core-Architektur zum Hauptpfeiler von Intel wurde.
Auch die Geschichte von ARM zeigt einen ähnlichen Verlauf.
Laut Steve Furber war die Effizienz so hoch, dass Code lief, obwohl man vergessen hatte, die Stromversorgung anzuschließen.
Es wird eine Korrektur zu einem Blogbeitrag eines Kollegen geteilt.
Im Fedora-RISC-V-Build-System wurde ein
binutils-Build auf einem Milk-V „Megrez“ in 67 Minuten abgeschlossen, was eine deutliche Verbesserung gegenüber dem früheren Wert von 143 Minuten ist.Das derzeit schnellste Entwicklerboard ist nicht das Banana Pi, sondern das SiFive „HiFive P550“ und das UltraRISC „DP1000“.
Der FOSDEM-Vortrag „Fedora on RISC-V: state of the arch“ behandelt ebenfalls entsprechende Benchmarks.
Marcins Test wurde auf einem StarFive „VisionFive 2“ durchgeführt; dieses Board ist zwar stabil, aber eher langsam.
Um beim
gcc-Build vier Binärdateien gleichzeitig zu linken, werden mindestens 16 GB benötigt, und mit aktiviertem Swap läuft es stabiler.Auf dem VisionFive 2 muss man mit
-j1oder-j2bauen, wodurch sich die Zeit um das Zwei- bis Vierfache verlängert.Effizienter wäre ein besserer Linker (als Ersatz für ld) oder wie im LLVM-Build-System eine separate Vorgabe der Zahl paralleler Link-Vorgänge.
ARM hat 40 Jahre gebraucht, um an seinen heutigen Stand zu kommen, und RISC-V ist erst 15 Jahre alt.
Dieses Jahr will Tenstorrent eine serverbasierte Plattform auf RVA23-Basis veröffentlichen, also lohnt es sich, das weiter zu beobachten.
Entscheidend ist letztlich, dass die Hardware-Anbieter leistungsfähiges Silizium auf den Markt bringen.
felix baut mit einem Milk-V Pioneer das Arch-Linux-RISC-V-Repository.
Ich denke, dass auch die durch die SOPHGO-Sanktionen verlangsamte Entwicklung eine Ursache ist.
Das auf dem SG2380 von SOPHGO basierende Milk-V Oasis wurde zwar gestrichen, war aber ein sehr vielversprechendes SoC.
Die Chips dieser Firma unterstützten eine Dual-Architektur, zwischen ARM und RISC-V konnte also umgeschaltet werden.
Siehe Arch-RISC-V-Repository und den zugehörigen Artikel.
Ich frage mich, warum RISC-V-Software unbedingt auf einem RISC-V-System gebaut werden muss.
Compiler betten Informationen über die Zielarchitektur in den Code ein, also müsste es theoretisch doch auch auf einem anderen System möglich sein.
Fedora unterstützt derzeit nur Native Builds, und Cross-Compiler gibt es nur als Bare-Metal-Versionen für Firmware.
Außerdem ist automatisiertes Testen schwierig, daher sind Native Builds auf echter Hardware für Tests realistischer.
AArch64 war anfangs ebenfalls langsam, hat sich aber so weit entwickelt, dass ein Qt4-Build heute in 18 Minuten fertig ist.
Das lässt sich je nach Sprache lösen, aber besonders im C/C++-Ökosystem ist es komplex.
Deshalb wird meist in einer VM oder auf echter Zielhardware gebaut.
Seit LLVM ist das möglich, aber für Tests braucht man weiterhin einen Emulator.
Es gibt auch die Meinung: „Kann man nicht einfach auf einem x86_64-Server cross kompilieren?“
Vor einem Jahr sah ich auf Mastodon einen Beitrag mit der Aussage, dass „die schnellste RISC-V-Hardware langsamer ist als QEMU“.
RISC-V breitet sich zwar in viele Bereiche aus, ist im High-Performance-Computing aber weiterhin schwach.
Zudem ist der Entwickler wegen US-Sanktionen vom Markt verschwunden.
Cross-Compilation ist nicht unmöglich, aber in den Phasen
%installund%checkwird die Testausführung zum Problem.Zum Beispiel mussten im PR für das Paket
rpyauf RISC-V Vektortests deaktiviert werden.Man kann Build und Tests trennen, aber gemessen an der zusätzlichen Komplexität spart das nicht viel Zeit.
Schon im LWN-Thread von 2012 (Link) wurde gegen Cross-Compilation argumentiert.
Das Ergebnis, dass i686 um 14 % schneller sei als x86_64, wirkt fragwürdig.
Normalerweise ist x86_64 schneller, vor allem dank der größeren Zahl an Registern und der Vektor-Instruktionen.
Allerdings versucht der Compiler dadurch möglicherweise auch mehr Optimierungen, was die Build-Zeit verlängern kann.
Bei RISC-V könnte es ein ähnliches Phänomen geben.
Im Artikel wird nicht angegeben, welche RISC-V-CPU verwendet wurde, daher bleibt der Vergleich vage.
Der Milk-V Pioneer ist mit 64 Kernen und 128 GB RAM eine Ausnahme, nutzt aber eine ältere Architektur und ist teuer.