Größte Engpässe beim Erstellen von Android aus dem Quellcode

click fraud protection

Neugierig, welche Engpässe das AOSP-Projekt verursacht? Dan teilt seine Erkenntnisse mit – was die Leser vielleicht überraschen wird, was einen Engpass verursacht und was nicht.

Update 19.04. 12:00 Uhr CT: Klargestellte Build-Zeiten sind Ccache-Build-Zeiten.Update 20.04. 9:17 Uhr CT: Build 3 war mit Sicherheit kein RAID 1. Dieser Fehler wurde korrigiert.

Im Jahr 2012 begann ich, Kernel zu bauen – und verließ mich dabei auf meinen treuen Core 2 Quad Q9550. Wenn das keine Erschütterung wert wäre, dann wird die Tatsache, dass ich es in einer VM innerhalb von Windows gemacht habe, wahrscheinlich dafür sorgen, dass dies für die meisten Leute, die Android aus dem Quellcode erstellen, der Fall ist.

Eine virtualisierte Ubuntu-Umgebung ist nicht so leistungsfähig wie eine native Umgebung, und wie schmerzhaft das wurde, als die Erstellung eines Kernels über zwei Stunden dauerte. Da ich im folgenden Jahr damit beginnen wollte, Android aus dem Quellcode zu entwickeln, wusste ich, dass meine aktuelle Hardware dies nicht tun würde Schneiden Sie es ab – und so begann eine lange und immer noch andauernde Reise, um einen Weg zu finden, diese ständig wachsende Masse zu reduzieren Zeit.

Seitdem hatte ich das Glück, Tests auf mehreren Formfaktoren und Plattformen durchführen zu können. Dies ist wichtig, da Build-Konfigurationen bei Android keine Einheitssituation sind. Ein Anwendungsentwickler benötigt möglicherweise nicht die gleiche Konfiguration wie ein Spieleentwickler. Und jemand, der nur Kernel erstellt, muss möglicherweise nicht so viel ausgeben wie jemand, der in sehr kurzer Zeit ein vollständiges Android-ROM aus dem Quellcode erstellen muss. Und was ist mit der Auswahl des Betriebssystems – was kann derzeit verwendet werden (und was nicht)? Ich hoffe, dies auch mehr zu erforschen, insbesondere mit Windows und Canonical arbeiten daran, ein vollwertiges Bash für Windows 10 bereitzustellen.

Um diese Serie richtig einzuleiten, müssen wir herausfinden, wo die größten potenziellen Engpässe bei der Erstellung von AOSP-Projekten aus dem Quellcode liegen. Wir kaufen nicht oft einen PC oder Upgrades, ohne zu wissen, wofür wir das Geld anlegen sollen. Basierend auf drei Jahren Forschung und quantifizierbaren Ergebnissen bin ich bereit, meine Erkenntnisse mitzuteilen. Nun der erwartete Haftungsausschluss: Diese Ergebnisse basieren auf persönlichen Erfahrungen und können unmöglich alle Kombinationen berücksichtigen. Diejenigen unter Ihnen, die über eine eigene Build-Konfiguration verfügen, hören Sie zu und lassen Sie uns wissen, wie es Ihren Builds geht! Die Zeiten beziehen sich auch auf Builds mit aktiviertem und gefülltem Ccache – waren normalerweise doppelt so hoch, wenn der Ccache noch nicht gefüllt war.

Festplatten-E/A: Ich muss Cyanogens Tom Marshall einen Hut geben – auch einen Mitglied des Teams Kang - dafür, dass Sie mich letztes Jahr in diese Richtung gewiesen haben. Ich habe ihm ehrlich gesagt nicht geglaubt, als er mir sagte, dass das so sein würde Die Engpass bei der CPU. Aber in den letzten 6 Monaten konnte ich dies mit quantifizierbaren Daten untermauern. Bei High-End-CPUs (wie den meisten Desktop-Intel Core i7-Modellen) ist dies der größte Engpass, der in Ihrem System auftreten wird.

Nehmen wir 4 Build-Konfigurationen, an denen ich dies getestet habe. Ich werde hier die CPU hervorheben,

  • Build 1, mein „nicht aktualisierter“ PC, war ein Intel i7-4790K mit 32 GB DDR3-2400 RAM, ein Samsung 840 Evo mit 250 GB als primäres Laufwerk und ein älterer Micron P400E mit 100 GB.
  • Build 2, die aktualisierte Version von Build 1. Jetzt mit einem auf 4,0 GHz übertakteten Intel i7-5960X, 32 GB DDR4-3200-RAM, einer Samsung SM951 512 GB AHCI m.2 SSD sowie den beiden vorherigen SSDs. Die vollständigen Build-Spezifikationen hierfür finden Sie auf PCPartPicker.
  • Build 3, ein aktueller Benutzer-Build, enthielt einen auf 4,2 GHz übertakteten Intel i7-5820K, 16 GB DDR4-2400 und 2 Samsung 840 EVO 120 GB in RAID0-Konfiguration (gestreift).
  • Build 4, ein aktueller Server-Build mit einem Intel Xeon E3-1270 v5 bei normalen Geschwindigkeiten, 32 GB DDR4-2133, einem Samsung 950 Pro 512 GB NVMe m.2 sowie 4 SATA-Samsung-Enterprise-SSDs in einem RAID5-Array.

Wenn Sie sich diese nur ansehen würden, welches hätte Ihrer Meinung nach die kürzeste Bauzeit erreicht? Wie wäre es mit dem zweiten? Zu meiner Überraschung war es nicht die zweite Konfiguration, die die kürzeste Buildzeit in Anspruch nahm, sondern die dritte Konfiguration knapp 14 Minuten für die Erstellung von CyanogenMod 13.0. Die dominierende CPU würde also sicherlich den zweiten Platz belegen, Rechts? Wieder falsch. Build 4, den ich gerade erst getestet habe, hat etwas mehr als 25 Minuten gedauert! Nur hier steht mein aktueller Build: 2 Minuten langsamer als ein System mit der Hälfte der Kerne und Threads, aber einem SSD-Array aus 3 SSDs, während meine SSDs eigenständig waren. Es ist auch bekannt, dass das SM951 Probleme mit der Drosselung hat, wenn es zu heiß wird, was in diesem Fall ein sehr realer Faktor sein könnte. Der erste und langsamste Build dauerte etwa 30 Minuten, eines der wenigen Male, dass ich CM 13.0 erstellt habe; Ich habe von ähnlichen Build-Konfigurationen gehört, die dies in 27 tun.

Früher waren SSDs auch schwer zu bekommen, daher gab es kaum Diskussionen zu diesem Thema. Allerdings sind die Preise im letzten Jahr sowohl im Einzelhandel als auch auf den Secondhand-Märkten dramatisch gesunken. Mit 120-GB-SSDs, die jetzt unter 50 US-Dollar kosten, ist dies nicht mehr die Hürde, die es früher einmal gab, einem System eine hinzuzufügen. Herkömmliche Festplatten reichen ebenfalls aus, aber Benutzer, die keine SSDs verwenden, werden diesen Engpass eher vor anderen erreichen.

CPU-RuhezustandCPU: Wenn ich oben erwähne, dass der größte Engpass die Festplatten-E/A ist, geht das von einer Annahme aus, die möglicherweise nicht immer der Fall ist – jeder der Builds, die ich verwendet habe, verfügte über einen Intel Core i7. Aber wie ich beim Xeon-Server festgestellt habe, hält die Festplatte mit, hält dann aber auch bei den aufwändigsten Build-Prozessen alle 8 CPU-Threads bei hoher Auslastung. Und so sehr ich es auch versuche, ohne das RAID-Array, das wir oben gefunden haben, ist mein Haswell-E für den größten Teil des Build-Prozesses nicht einmal annähernd voll ausgelastet. Wenn Sie also nach dem besten Preis-Leistungs-Verhältnis suchen, sollten Sie den Intel i7-5820K in Betracht ziehen.

Stimmt, es handelt sich um X99 und daher ist das Motherboard möglicherweise teurer als ein Z97-Motherboard. aber wir sind auch noch im ersten Jahr des X99-Zyklus. Es wird auch erwartet, dass die Preise für Broadwell-E bei Veröffentlichung ähnlich wie für Haswell-E bleiben, was bedeutet, dass Sie sollten in der Lage sein, sich im Enthusiasten-Segment für fast den gleichen Preis wie einen i7-4790K oder einzukaufen i7-6700K.

Bei Intel gibt es derzeit keinen großen Grund, über einen 5820K hinauszugehen, da man damit beeindruckende Build-Zeiten erreichen kann. In den meisten Fällen führt eine höhere Kern-/Thread-Anzahl unten zusammen mit der Prozessorgeschwindigkeit zu einer kürzeren Build-Zeit. Der Aufbau eines i7-4770R in einem GIGABYTE Brix dauerte letztes Jahr durchschnittlich 42 Minuten. Es war zwar nicht das Schnellste, entsprach aber meinen Anforderungen und ermöglichte mir eine dedizierte Konfiguration mit geringem Stromverbrauch. Das Gleiche gilt für AMD-APUs – auch wenn sie derzeit möglicherweise nicht so leistungsfähig sind wie ihre Intel-Pendants, erledigen sie ihre Arbeit problemlos und normalerweise zu einem günstigeren Preis als der Kauf von Intel. Dies ist eine Situation, die ich genau beobachte, denn wenn die Gerüchte wahr sind, könnten Zen-basierte APUs diese Lücke deutlich schließen.

Für diejenigen unter Ihnen, die sich dafür entscheiden würden, diese Engpässe zu beseitigen, gibt es ein Ergebnis, das eher für Heimanwender als für das Büro gilt. Durch die Beseitigung dieser Engpässe wird die allgemeine Leistung eines Systems gesteigert. Vor allem Gamer werden feststellen, dass ein Upgrade zur Behebung dieser Engpässe in fast allen Fällen auch die Spieleleistung steigert. Auch wenn es vielleicht nicht die schnellste Build-Zeit war, sorgte dieser zweite Build für eine unerwartete Überraschung – eine Ladezeit von 30 Sekunden Nur Ursache 3 als sich viele andere über Ladezeiten in Minuten beschwerten. Letztendlich sind diese Bauzeiten wirklich hoch und für viele möglicherweise übertrieben... Aber zumindest ist das Argument, dass mehr Kerne schnellere Builds bedeuten würden, jetzt endlich entkräftet.

Da dies erst der Anfang ist, hoffen wir, dass die Leser mitmachen und ihre Build-Erfahrungen zu verschiedenen Konfigurationen teilen. Möchten Sie als Leser mehr Diskussionen zu solchen Themen sehen? Ton aus in den Kommentaren unten!