Grootste knelpunten bij het bouwen van Android vanaf de bron

Benieuwd welke knelpunten het AOSP-project opbouwt? Dan deelt zijn bevindingen - wat de lezers misschien zal verbazen over wat wel en niet een knelpunt veroorzaakt.

Update 19/4 12 uur CT: Verduidelijkte bouwtijden zijn ccache-bouwtijden.Update 20/04 09:17 CT: Build 3 was zeker niet RAID 1. Heb die fout gecorrigeerd.

In 2012 begon ik met het bouwen van kernels - en vertrouwde ik op mijn vertrouwde Core 2 Quad Q9550 om deze te bouwen. Als dat niet de moeite waard was om ineen te krimpen, dan zal het feit dat ik het in een VM binnen Windows deed dat waarschijnlijk garanderen voor de meeste mensen die Android vanaf de bron bouwen.

Een gevirtualiseerde Ubuntu-omgeving presteert niet zo goed als een native omgeving en oh, hoe pijnlijk werd dat duidelijk toen het bouwen van een kernel meer dan 2 uur duurde. Omdat ik het jaar daarop Android vanaf de bron wilde gaan bouwen, wist ik dat mijn huidige hardware dat niet zou doen snijd het af - en zo begon een lange en nog steeds voortdurende reis om een ​​manier te vinden om die steeds groter wordende lichaamsbouw te verminderen tijd.

In de jaren daarna heb ik het geluk gehad om op meerdere vormfactoren en platforms te testen. Dit is belangrijk omdat buildconfiguraties bij Android geen one-size-fits-all situatie zijn. Een applicatie-ontwikkelaar heeft mogelijk niet dezelfde configuratie nodig als een game-ontwikkelaar. En iemand die alleen kernels bouwt, hoeft misschien niet zoveel uit te geven als iemand die in zeer korte tijd een volledig Android-ROM vanaf de broncode moet bouwen. En hoe zit het met de OS-selectie: wat kan op dit moment wel (en niet) worden gebruikt? Ik hoop dit ook verder te onderzoeken, vooral met Windows en Canonical werken eraan om een ​​volwaardige Bash naar Windows 10 te brengen.

Om deze serie goed van start te laten gaan, moeten we uitzoeken waar de grootste potentiële knelpunten zitten bij het bouwen van AOSP-projecten vanaf de bron. We gaan niet vaak winkelen voor een pc of upgrades zonder te weten waar we uw geld moeten steken. Dus op basis van drie jaar onderzoek en meetbare resultaten ben ik klaar om te delen wat ik heb gevonden. Nu de verwachte disclaimer: deze bevindingen zijn gebaseerd op persoonlijke ervaringen en kunnen onmogelijk alle combinaties omvatten. Degenen onder jullie met je eigen build-configuratie, laat ons weten hoe het met je builds gaat! De tijden verwijzen ook naar builds waarbij ccache is ingeschakeld en gevuld - dit was meestal het dubbele als ccache nog niet was gevuld.

Schijf-I/O: Ik moet een hoedtip geven aan Tom Marshall van Cyanogen - ook een lid van team Kang - omdat u mij vorig jaar in deze richting heeft gewezen. Ik geloofde hem eerlijk gezegd niet toen hij me vertelde dat dit zo zou zijn de bottleneck boven de CPU. Maar de afgelopen zes maanden heb ik dit kunnen onderbouwen met kwantificeerbare gegevens. Bij duurdere CPU's (zoals de meeste desktop Intel Core i7-modellen) is dit het grootste knelpunt dat uw systeem zal ervaren.

Laten we vier buildconfiguraties nemen waarop ik dit heb getest. Ik zal hier de CPU benadrukken,

  • Build 1, mijn "niet-geüpgradede" pc, was een Intel i7-4790K met 32 ​​GB DDR3-2400 RAM, een Samsung 840 Evo 250 GB voor mijn primaire schijf en een oudere Micron P400E 100 GB.
  • Build 2, de geüpgradede versie van Build 1. Nu uitgerust met een Intel i7-5960X overgeklokt tot 4,0 GHz, 32 GB DDR4-3200 RAM, een Samsung SM951 512 GB AHCI m.2 SSD samen met de twee vorige SSD's. De volledige buildspecificaties hiervoor staan ​​op PCPartPicker.
  • Build 3, een recente gebruikersbuild, bevatte een Intel i7-5820K overgeklokt naar 4,2 GHz, 16 GB DDR4-2400 en 2 Samsung 840 EVO 120 GB in RAID0 (gestreepte) configuratie.
  • Build 4, een recente serverbuild met een Intel Xeon E3-1270 v5 op normale snelheden, 32 GB DDR4-2133, een Samsung 950 Pro 512GB NVMe m.2 samen met 4 SATA Samsung enterprise SSD's in een RAID5-array.

Als je daar alleen maar naar zou kijken, welke zou volgens jou dan de laagste bouwtijd hebben opgeleverd? Hoe zit het met de tweede? Tot mijn schrik was het niet de tweede configuratie die de laagste bouwtijd kostte - het was de derde configuratie iets minder dan 14 minuten voor het bouwen van CyanogenMod 13.0. Dus de dominante CPU zou zeker de tweede plaats innemen, rechts? Opnieuw fout. Bouw 4, waar ik net mee heb getest, duurde iets meer dan 25 minuten! Alleen hier staat mijn huidige build, 2 minuten langzamer dan een systeem met de helft van de cores en threads maar een SSD-array van 3 SSD's, terwijl mijn SSD's standalones waren. Het is ook bekend dat de SM951 smoorproblemen heeft als hij te heet wordt, iets dat in dit geval een zeer reële factor zou kunnen zijn. De eerste en langzaamste build duurde ongeveer 30 minuten, een van de weinige keren dat ik CM 13.0 had gebouwd; Ik heb gehoord van vergelijkbare build-configuraties die dit in 27 doen.

SSD's waren vroeger ook een moeilijk item om te krijgen, dus er was heel weinig discussie over dit onderwerp. De prijzen zijn het afgelopen jaar echter dramatisch gedaald, zowel op de detailhandels- als op de tweedehandsmarkt. Met SSD's van 120 GB nu onder de $ 50, is het niet meer de barrière die het ooit was om er een aan een systeem toe te voegen. Traditionele harde schijven zullen het werk ook doen, maar gebruikers zullen dit knelpunt eerder bereiken dan anderen als ze geen SSD's gebruiken.

CPU-slaapCPU: Als ik hierboven vermeld dat het grootste knelpunt schijf-I/O is, wordt er wel vanuit gegaan dat dit niet altijd het geval is: elk van de builds die ik gebruikte bevatte een Intel Core i7. Maar zoals ik bij de Xeon-server heb ontdekt, houdt de schijf het bij, maar houdt hij vervolgens alle 8 CPU-threads hoog belastbaar tijdens de zwaarste bouwprocessen. En hoe ik het ook probeer, zonder de RAID-array die we hierboven hebben gevonden, merk ik dat mijn Haswell-E niet eens bijna volledig wordt benut voor het grootste deel van het bouwproces. Dus als je op zoek bent naar de beste waar voor je bouwgeld, overweeg dan de Intel i7-5820K.

Toegegeven, het is X99 en dus kan het moederbord duurder zijn dan een Z97-moederbord; maar we zitten ook nog steeds in jaar één van de X99-cyclus. De prijzen voor Broadwell-E zullen naar verwachting ook bij de release vergelijkbaar blijven met die van Haswell-E, wat betekent dat je zou het liefhebberssegment voor bijna dezelfde prijs moeten kunnen kopen als een i7-4790K of i7-6700K.

Op Intel is er momenteel niet veel reden om verder te gaan dan een 5820K, omdat je er indrukwekkende bouwtijden mee kunt behalen. Voor het grootste deel zorgt een hoger aantal kernen/threads hieronder, samen met processorsnelheden, voor een snellere bouwtijd. Vorig jaar had ik met een i7-4770R in een GIGABYTE Brix gemiddeld 42 minuten nodig om te bouwen. Hoewel het niet de snelste was, voldeed het wel aan mijn behoeften en kon ik over een speciale configuratie met laag energieverbruik beschikken. Hetzelfde zul je tegenkomen bij AMD APU's - hoewel ze momenteel misschien niet zo goed presteren als hun Intel-tegenhanger, zullen ze de klus gemakkelijk klaren en meestal tegen een lagere prijs dan het kopen van Intel. Dit is een situatie die ik nauwlettend in de gaten houd, want als de geruchten waar zijn, kunnen op Zen gebaseerde APU's die kloof aanzienlijk dichten.

Er is een resultaat voor degenen onder u die ervoor kiezen om deze knelpunten weg te nemen, een resultaat dat meer van toepassing is op thuisgebruikers dan op kantoor. De algemene prestaties van een systeem zullen toenemen door deze knelpunten weg te nemen. Vooral gamers zullen merken dat upgraden om deze knelpunten aan te pakken in bijna alle gevallen ook de spelprestaties zal verbeteren. Hoewel het misschien niet de snelste bouwtijd heeft opgeleverd, zorgde die tweede build voor een onverwachte verrassing: een laadtijd van 30 seconden Gewoon oorzaak 3 terwijl vele anderen klaagden over laadtijden in minuten. Uiteindelijk zijn deze bouwtijden echt high-end en voor velen misschien overdreven... maar nu is het argument dat meer cores snellere builds betekenen eindelijk terzijde geschoven.

Omdat dit nog maar het begin is, hopen we dat lezers zullen meedoen en hun bouwervaringen met verschillende configuraties zullen delen. Wil je als lezer meer discussies zien over dit soort onderwerpen? Geluid uit in de reacties hieronder!