Самые большие узкие места при сборке Android из исходного кода

Любопытно, какие узкие места создает проект AOSP? Дэн делится своими выводами, которые могут удивить читателей относительно того, что является причиной и не является узким местом.

Обновление от 19 апреля, 12:00 по центральному времени.: уточненное время сборки — это время сборки ccache.Обновление от 20 апреля, 9:17 по центральному времени: Сборка 3 определенно не была RAID 1. Исправил эту ошибку.

В 2012 году я начал собирать ядра и полагался на свой верный процессор Core 2 Quad Q9550. Если это и не достойно сожаления, то тот факт, что я сделал это на виртуальной машине внутри Windows, вероятно, будет гарантировать это большинству людей, которые собирают Android из исходного кода.

Виртуализированная среда Ubuntu работает не так хорошо, как собственная среда, и, ох, как болезненно это стало очевидным, когда на сборку ядра ушло более 2 часов. Поскольку в следующем году я хотел начать сборку Android из исходных кодов, я знал, что мое нынешнее оборудование не сможет этого сделать. сократите его – и так начался долгий и продолжающийся путь в поисках способа уменьшить эту постоянно растущую массу. время.

За прошедшие с тех пор годы мне посчастливилось провести тестирование на различных форм-факторах и платформах. Это важно, поскольку конфигурации сборки не являются универсальной ситуацией для Android. Разработчику приложений может не потребоваться та же конфигурация, что и разработчику игр. И кому-то, кто занимается сборкой только ядер, возможно, не придется тратить столько же, сколько тому, кому нужно собрать полную прошивку Android из исходного кода за очень короткий промежуток времени. А как насчет выбора ОС — что можно (и нельзя) использовать прямо сейчас? Я надеюсь изучить это подробнее, особенно с Windows и Canonical работают над внедрением полноценного Bash в Windows 10.

Чтобы начать эту серию правильно, нам нужно найти самые большие потенциальные узкие места при создании проектов AOSP из исходного кода. Мы не часто покупаем компьютер или модернизируем его, не зная, куда положить деньги. Итак, основываясь на трехлетних исследованиях и поддающихся количественной оценке результатах, я готов поделиться тем, что нашел. Теперь ожидаемый отказ от ответственности: эти выводы основаны на личном опыте и не могут учитывать все комбинации. Те из вас, у кого есть собственная конфигурация сборки, отключите звук и дайте нам знать, как обстоят дела с вашими сборками! Times также относится к сборкам с включенным и заполненным ccache — обычно оно удваивается, когда ccache еще не заполнен.

Дисковый ввод-вывод: Я должен дать небольшой совет Тому Маршаллу из Cyanogen – тоже член команды Канга - за то, что указали мне в этом направлении в прошлом году. Честно говоря, я не поверил ему, когда он сказал мне, что это будет тот узкое место в процессоре. Но за последние 6 месяцев я смог подтвердить это количественными данными. В процессорах более высокого класса (таких как большинство моделей Intel Core i7 для настольных ПК) это главное узкое место, с которым может столкнуться ваша система.

Давайте возьмем 4 конфигурации сборки, на которых я это тестировал. Я выделю здесь процессор,

  • Сборка 1, мой «необновленный» компьютер, представляла собой Intel i7-4790K с 32 ГБ оперативной памяти DDR3-2400, Samsung 840 Evo 250 ГБ в качестве основного диска и более старый Micron P400E 100 ГБ.
  • Сборка 2, которая была обновленной версией Сборки 1. Теперь он оснащен процессором Intel i7-5960X, разогнанным до 4,0 ГГц, 32 ГБ оперативной памяти DDR4-3200, твердотельным накопителем Samsung SM951 емкостью 512 ГБ AHCI m.2 вместе с двумя предыдущими твердотельными накопителями. Полные спецификации сборки находятся на PCPartPicker..
  • Сборка 3, недавняя пользовательская сборка, включала в себя процессор Intel i7-5820K, разогнанный до 4,2 ГГц, 16 ГБ памяти DDR4-2400 и два Samsung 840 EVO 120 ГБ в конфигурации RAID0 (чередующейся).
  • Сборка 4, недавняя сборка сервера с процессором Intel Xeon E3-1270 v5 с нормальной скоростью, 32 ГБ DDR4-2133, Samsung 950 Pro 512 ГБ NVMe m.2, а также 4 корпоративными твердотельными накопителями SATA Samsung в массиве RAID5.

Если бы вы просто посмотрели на них, какой из них, по вашему мнению, достиг бы наименьшего времени сборки? А как насчет второго? К моему шоку, наименьшее время сборки заняла не вторая конфигурация, а третья. чуть менее 14 минут на сборку CyanogenMod 13.0. Так что доминирующий процессор наверняка займет второе место, верно? Опять неправильно. Сборка 4, которую я только что закончил тестировать, заняла чуть больше 25 минут! Только вот где находится моя текущая сборка: на 2 минуты медленнее, чем система с половиной ядер и потоков, но SSD-массивом из 3 SSD, тогда как мои SSD были автономными. Также известно, что у SM951 возникают проблемы с регулированием, если он становится слишком горячим, что в данном случае может быть вполне реальным фактором. Первая и самая медленная сборка заняла около 30 минут, это один из немногих случаев, когда я собирал CM 13.0; Я слышал о подобных конфигурациях сборки, делающих это в 27.

Раньше твердотельные накопители также было сложно достать, поэтому эта тема обсуждалась очень мало. Однако за последний год цены резко упали как на розничном, так и на вторичном рынке. Теперь, когда твердотельные накопители емкостью 120 ГБ стоят менее 50 долларов, добавление одного из них в систему не является препятствием, как раньше. Традиционные жесткие диски также справятся с этой задачей, но пользователи с большей вероятностью столкнутся с этим узким местом раньше других, если не используют твердотельные накопители.

Режим сна процессораПРОЦЕССОР: Когда я упоминаю выше, что главным узким местом является дисковый ввод-вывод, это связано с предположением, которое может быть не всегда верным: каждая из тех сборок, которые я использовал, оснащена Intel Core i7. Но, как я обнаружил на сервере Xeon, диск продолжает работать, но затем поддерживает высокую загрузку всех 8 потоков ЦП в самых тяжелых процессах сборки. И как бы я ни старался, без RAID-массива, который мы нашли выше, мой Haswell-E даже близко не полностью используется для большей части процесса сборки. Так что, если вы ищете максимальную отдачу от вложенных средств, рассмотрите Intel i7-5820K.

Правда, это X99, поэтому материнская плата может оказаться дороже, чем материнская плата Z97; но мы все еще находимся на первом году цикла X99. Ожидается, что после выпуска цены на Broadwell-E останутся такими же, как на Haswell-E, а это означает, что вы сможете купить его в сегменте энтузиастов почти по той же цене, что и i7-4790K или i7-6700К.

У Intel на данный момент нет особых причин выходить за рамки 5820K, поскольку с его помощью вы можете добиться впечатляющего времени сборки. По большей части, чем выше указанное ниже количество ядер/потоков, а также скорость процессора, вы ускорите время сборки. В прошлом году сборка i7-4770R в GIGABYTE Brix в среднем длилась 42 минуты. Хоть и не самый быстрый, но он удовлетворил мои потребности и позволил мне создать специальную конфигурацию с низким энергопотреблением. То же самое вы найдете и с APU AMD — хотя в настоящее время они могут работать не так хорошо, как их аналоги Intel, они легко выполнят свою работу и обычно по более низкой цене, чем покупка Intel. За этой ситуацией я внимательно слежу, потому что, если слухи верны, то APU на базе Zen могут значительно сократить этот разрыв.

Для тех из вас, кто решит устранить эти узкие места, есть результат, который больше относится к домашним пользователям, чем к офисным. Общая производительность системы повысится за счет устранения этих узких мест. В частности, геймеры обнаружат, что обновление для устранения этих узких мест почти во всех случаях также повысит производительность игры. Хотя она, возможно, и не выиграла самое быстрое время сборки, вторая сборка преподнесла неожиданный сюрприз — время загрузки на компьютере составило 30 секунд. Просто Причина 3 когда многие другие жаловались на время загрузки в минутах. В конце концов, время сборки действительно очень велико и для многих может оказаться излишним... но, по крайней мере, теперь аргумент о том, что больше ядер будет означать более быструю сборку, наконец-то опровергнут.

Поскольку это только начало, мы надеемся, что читатели присоединятся и поделятся своим опытом сборки различных конфигураций. Как читатель, вы хотите видеть больше дискуссий на подобные темы? Выключите звук в комментариях ниже!