Любопитно какви пречки изгражда проектът AOSP? Дан споделя откритията си, които може да изненадат читателите относно това какво причинява и какво не причинява пречка.
Актуализация на 19 април 12 ч. CT: Изяснените времена за изграждане са времена за изграждане на ccache.Актуализация 4/20 9:17 сутринта CT: Build 3 със сигурност не беше RAID 1. Поправи тази грешка.
През 2012 г. започнах да изграждам ядра - и разчитах на моя надежден Core 2 Quad Q9550, за да го изградя. Ако това не беше достойно за ужас, тогава фактът, че го направих във виртуална машина в Windows, вероятно ще гарантира това за повечето хора, които изграждат Android от източника.
Виртуализираната среда на Ubuntu не работи толкова добре, колкото естествената среда и о, колко болезнено стана ясно, когато изграждането на ядрото отне повече от 2 часа. Тъй като исках да започна изграждането на Android от източника през следващата година, знаех, че сегашният ми хардуер няма да го направи отрежете го -- и така започна едно дълго и все още продължаващо пътуване за намиране на начин за намаляване на това непрекъснато нарастващо изграждане време.
През годините оттогава имах късмета да тествам на множество форм фактори и платформи. Това е важно, тъй като конфигурациите за изграждане не са универсална ситуация с Android. Разработчикът на приложения може да не се нуждае от същата конфигурация като разработчика на игри. И някой, който създава само ядра, може да не трябва да харчи толкова много, колкото някой, който трябва да изгради пълен Android ROM от изходния код за много кратко време. А какво ще кажете за избора на ОС -- какво може (и какво не може) да се използва в момента? Надявам се да проуча и това повече, особено с Windows и Canonical работят за въвеждане на пълноценен Bash в Windows 10.
За да започнем правилно тази серия, трябва да открием къде са най-големите потенциални затруднения при изграждането на AOSP проекти от източника. Не пазаруваме често компютър или надстройки, без да знаем къде да вложим парите си. Така че въз основа на 3 години изследвания и количествено измерими резултати съм готов да споделя какво открих. Сега очакваният отказ от отговорност: тези констатации се основават на личен опит и не могат да бъдат фактор във всички комбинации. Тези от вас със собствена конфигурация на компилация, изключете звука и ни уведомете как се справят вашите компилации! Времената също се отнасят за компилации с активиран и попълнен ccache - обикновено се удвоява, когато ccache все още не е попълнен.
Дисков вход/изход: Трябва да дам съвет на Том Маршал от Cyanogen - също a член на Team Kang - че ме насочи в тази посока миналата година. Честно казано не му повярвах, когато ми каза, че това ще бъде на тясно място над процесора. Но през последните 6 месеца успях да подкрепя това с количествено измерими данни. При процесорите от по-висок клас (като повечето настолни модели Intel Core i7) това е най-голямото затруднение, което вашата система ще изпита.
Нека вземем 4 конфигурации за изграждане, на които съм тествал това. Тук ще подчертая процесора,
- Компилация 1, моят „ненадстроен“ компютър, беше Intel i7-4790K с 32 GB DDR3-2400 RAM, Samsung 840 Evo 250 GB за основното ми устройство и по-стар Micron P400E 100 GB.
- Build 2, която беше надстроената версия на Build 1. Сега разполага с Intel i7-5960X, овърклокнат до 4,0 GHz, 32 GB DDR4-3200 RAM, Samsung SM951 512 GB AHCI m.2 SSD заедно с двата предишни SSD. Пълните спецификации за компилация за това са на PCPartPicker.
- Build 3, скорошна потребителска компилация, включва Intel i7-5820K, овърклокнат до 4,2 GHz, 16GB DDR4-2400 и 2 Samsung 840 EVO 120GB в RAID0 (раирана) конфигурация.
- Build 4, скорошна сървърна компилация, включваща Intel Xeon E3-1270 v5 при нормални скорости, 32 GB DDR4-2133, Samsung 950 Pro 512GB NVMe m.2 заедно с 4 SATA корпоративни SSD на Samsung в RAID5 масив.
Ако просто ги погледнете, кой според вас е постигнал най-ниското време за изграждане? Какво ще кажете за второто? За мой шок не беше втората конфигурация, която отне най-малко време за изграждане - това беше третата конфигурация, при малко под 14 минути за изграждане на CyanogenMod 13.0. Така че със сигурност доминиращият процесор ще заеме второ място, нали? Пак грешно. Компилация 4, която току-що приключих с тестването, отне малко повече от 25 минути! Само тук е сегашната ми компилация, 2 минути по-бавна от система с половината ядра и нишки, но SSD масив от 3 SSD, докато моите SSD бяха самостоятелни. Известно е също, че SM951 има проблеми с дроселирането, ако стане твърде горещо, нещо, което може да бъде много реален фактор в този случай. Първата и най-бавна компилация отне около 30 минути, един от единствените пъти, когато бях компилирал CM 13.0; Чувал съм за подобни конфигурации на компилация, които го правят в 27.
SSD дисковете също бяха труден за получаване, така че имаше много малко дискусии по темата. През последната година обаче цените спаднаха драстично както на дребно, така и на пазарите втора употреба. Със 120GB SSD, сега под $50, не е бариерата, която беше преди, да добавите такъв към система. Традиционните твърди дискове също ще свършат работа, но е по-вероятно потребителите да достигнат до това тясно място преди други, ако не използват SSD.
ПРОЦЕСОР: Когато споменах по-горе, че най-тясното място е I/O на диска, това наистина се основава на предположение, което не винаги е така - всяка от тези компилации, които използвах, включваше Intel Core i7. Но както открих със сървъра Xeon, дискът поддържа, но след това поддържа всички 8 нишки на процесора при високо използване през най-тежките процеси на изграждане. И колкото и да се опитвам, без RAID масива, който намерихме по-горе, не намирам моя Haswell-E дори близо до пълно използване за по-голямата част от процеса на изграждане. Така че, ако търсите най-доброто за вашите строителни пари, помислете за Intel i7-5820K.
Вярно е, че е X99 и затова дънната платка може да е по-скъпа от дънна платка Z97; но все още сме в година първа от цикъла X99. Цените за Broadwell-E също се очаква да останат подобни на Haswell-E при пускане, което означава, че трябва да можете да закупите в сегмента за ентусиасти на почти същата цена като i7-4790K или i7-6700K.
При Intel няма много причини да надхвърляте 5820K в момента, тъй като можете да получите впечатляващо време за изграждане с него. В по-голямата си част по-високият брой ядра/нишки по-долу, заедно със скоростта на процесора, ще ви осигури по-бързо време за изграждане. i7-4770R в GIGABYTE Brix миналата година ми осигури средно 42 минути изграждане. Въпреки че не беше най-бързият, той отговаряше на нуждите ми и ми позволи да имам специална конфигурация с ниска мощност. Ще откриете същото с AMD APU – въпреки че в момента може да не се представят толкова добре, колкото техния аналог на Intel, те лесно ще свършат работата и обикновено на по-ниска цена от закупуването на Intel. Това е ситуация, която следя отблизо, защото ако слуховете са верни, базираните на Zen APU може значително да запълнят тази празнина.
Има резултат за тези от вас, които биха избрали да премахнат тези пречки, такъв, който се отнася повече за домашните потребители, отколкото за офиса. Общата производителност на системата ще се увеличи чрез премахване на тези тесни места. Геймърите по-специално ще открият, че надграждането за справяне с тези тесни места в почти всички случаи също ще увеличи производителността на играта. Въпреки че може да не спечели най-бързото време за компилация, тази втора компилация даде неочаквана изненада - 30 секунди време за зареждане на Just Cause 3 когато много други се оплакваха от времето за зареждане в минути. В крайна сметка тези времена за изграждане са наистина високи и може да са прекалено много за много... но поне сега аргументът, че повече ядра ще означават по-бързи компилации, най-накрая беше спрян.
Тъй като това е само началото, се надяваме, че читателите ще се включат и ще споделят опита си при изграждането на различни конфигурации. Като читател искате ли да видите повече дискусии по този тип теми? Изключете звука в коментарите по-долу!