HeadlinesBriefing favicon HeadlinesBriefing.com

mold: Massiv paralleler Linker

Hacker News •
×

Das Linken ist ein kritischer Schritt im Software-Build-Prozess, der kompilierte Objektdateien zu einer einzigen ausführbaren Datei oder gemeinsamen Bibliothek kombiniert. Trotz jahrzehntelanger Ingenieursarbeit bleiben Linkzeiten ein erheblicher Engpass im Bearbeiten-Kompilieren-Debuggen-Zyklus, insbesondere bei großen C++-Programmen. Bestehende Linker nutzen begrenzte Parallelität und lassen die meisten CPU-Kerne während des Linkens im Leerlauf.

Wir präsentieren mold, einen Unix/Linux-Linker, der Datenparallelität systematisch über die gesamte Link-Pipeline anwendet. Wir analysieren zunächst die architektonischen Einschränkungen, die verhindern, dass bestehende Linker skalieren, einschließlich verschränkter Symbolauflösung und Archivverarbeitung, und zeigen dann, wie ein Neuanfang-Design, das sie entkoppelt, diese Einschränkungen überwindet.

Bei großen realen Programmen verlinkt mold Multi-Gigabyte-Debug-Binaries in höchstens einigen Sekunden, oft in unter einer Sekunde. Es ist 2,4-16,1x schneller als der hochmoderne lld-Linker und bis zu 112x schneller als das traditionelle GNU ld. Eine Ablationsstudie zeigt, dass keine einzelne Optimierung dominiert; die Beschleunigung ergibt sich aus dem kumulativen Effekt der Parallelisierung aller Durchläufe.

Wichtige Entitäten: Personen: Rui Ueyama