Часть 1 интервью с Франциско Франко, разработчиком Franco Kernel и других приложений для самых разных устройств.
Недавно я имел удовольствие взять интервью у человека, стоящего за одним из самых популярных ядер Android — Franco Kernel. В настоящее время ядро доступно на многих различных устройствах, включая различные устройства Nexus и OnePlus, а также Google Pixel/Pixel XL.
В этой части мы поговорим о пути Франсиско Франко в разработке ядра и его мнении об изменениях, которые Android претерпела за эти годы.
Я Адам Конвей на XDA, чтобы взять интервью у Франциско Франко, разработчика ядра Franco Kernel! Хотите представиться?
Конечно, меня зовут Франциско, как вы только что сказали, и я думаю, что я на XDA уже 1 миллион лет! Делал всякие вещи. Ядра, Программы, и в последнее время я немного больше расслабляюсь в ядрах, потому что через некоторое время это становится утомительным, но я все еще в полную силу работаю с большинством своих устройств.
Хорошо, я думаю, многие люди знакомы с вашей работой, но многие люди не знакомы с реальным человеком, стоящим за этой работой. Итак, я думаю, действительно ли у вас есть какой-либо прошлый опыт до появления ядер? Какую-нибудь степень в области компьютерных наук или что-то в этом роде заранее?
Я всегда был увлечен компьютерами, как и любой ребенок в детстве. После того, как мне исполнилось 18, я решил поступить в университет, как и все остальные, и, думаю, я поступил в университет. информатика или что-то в этом роде, но примерно через год я понял, что это не то, чем я на самом деле увлечен. о. После этого года мои ожидания начали падать, потому что это были только разговоры и никаких действий, и я был начинаю скучать - не потому, что я был лучше всех, я был просто средним - а настоящие дисциплины не были точно то, что я хотел. Я поговорил с родителями, и они знали, что меня это не очень устраивает. На Рождество 2010 года я получил свой первый телефон на базе Android. LG P500, это бюджетный телефон, очень дешевый, но я знал, что он работает под управлением Linux, а моей любимой дисциплиной в университете была компьютерная архитектура или что-то в этом роде, операционные системы. И мы немного изучали оболочку и немного говорили о ядре Linux и о том, что был частью ядра и всей связности ядра и самой операционной системы, и это был очаровательный для меня. А потом я вместе с другом начал пересобирать ядро Linux для своего старого ноутбука. При этом мы разбивали наши ноутбуки примерно 100 раз, но в процессе мы учились. А потом я начал экспериментировать со своим LG, и, думаю, первое, что я сделал, это попытался повысить производительность, потому что это устройство на самом деле было довольно паршивым. Поэтому лучшее, что я мог сделать, это просто просмотреть стандартные параметры ядра Linux для получения актуальной информации. управление памятью и прочее, и просто попытайтесь найти что-то немного лучше того, что уже было там. Я тогда немного повеселился.
Кажется, я не говорил об этом раньше в предыдущих интервью, но тогда это устройство использовало старую файловую систему под названием YAFFS — это означает «Еще одна флешка». Файловая система, но она была довольно медленной, когда мы пытались смонтировать ее как подкачивающий диск с оперативной памятью, поэтому я не помню подробностей, но мы делали разные разные операции. поэкспериментировали с этим, и в итоге мы установили Dalvik поверх оперативной памяти, которую приходилось восстанавливать при каждой перезагрузке, потому что, как вы знаете, оперативная память разряжается каждую время перезагрузки. Но это позволило значительно ускорить открытие приложений и выполнение тестов, поэтому мы были довольны. Итак, после этого я начал копать немного глубже и пытаться скомпилировать исходники ядра LG для устройства, и я сделал много плохих вещей. суждения и всевозможные ошибки - сеть Wi-Fi, что угодно - все, что только можно себе представить от человека, не имеющего опыт. Это было весело, я многому научился. Думаю, через год или шесть месяцев я стал немного более сосредоточенным и немного лучше знал, что мне нужно, чтобы получить загрузки. Это то, чего мы все хотим в конце концов. После этого мне удалось получить немного пожертвований и перейти на другие устройства. Думаю, Nexus S, затем Galaxy Nexus, а затем, после этого периода, мне удалось выпустить свое первое приложение. Думаю, мне очень повезло, и я смог профинансировать покупку новых устройств, и с этого момента все пошло в гору. Так что, в конце концов, я всем обязан, я бы не сказал XDA, но Платформа который нам предоставляет XDA.
И за этим стоит сообщество и все такое.
Да-да, я имею в виду платформу, то есть сообщество и настоящие форумы. Для тех, кто слушает: это не платный спонсор или что-то в этом роде, мне не платят за то, чтобы я это говорил, это просто правда!
Видео нет, люди не видят, как пистолет направлен тебе в голову, это нормально.
Ха-ха-ха, да, но кто-то скажет, что мне платят за то, чтобы я это сказал, поэтому я просто скажу это! Но да, да, для меня это была чудесная платформа, где я мог создавать крутые вещи, многому учиться. Я уничтожил свой Xiaomi Redmi Note 3, ух, загрузчик просто уничтожен. Поэтому мне приходится снова подключать его к моему компьютеру с Windows, который стоит там, и все перепрошивать, а он сидит здесь уже около трех месяцев. Я получаю всевозможную ненависть от всех за то, что я не обращаю внимания на это устройство, и поэтому я все еще делаю [ошибки], я думаю, так что даже после всех этих лет мне еще есть чему поучиться, и мне очень повезло, что я прошел через это путешествие, и оно было потрясающий.
Ну, я думаю, раз уж ты начал с... LG P500 это было?
Ага-ага.
Сколько лет назад это было? Потому что это должно было быть в оригинальных версиях Android, верно? Вокруг Фройо или что-то в этом роде?
Да, он поставлялся вместе с Froyo, а пару месяцев спустя его обновили до Gingerbread. Это устройство, я думаю, было 2010 года, начала 2011 года, возможно раньше. Я знаю, что моя учетная запись на XDA была создана в декабре 2010 года, но устройство у меня было заранее. Так что я думаю, что примерно в то же время, да.
Как с тех пор изменилась производительность Android? Например, как изменилось то, как вы пишете ядра тогда и пишете их сейчас? И я полагаю, что вы думаете об изменениях.
Что касается ядра, я думаю, что мы развились с реальным ядром Linux и всеми изменениями, которые на самом деле хотела внести команда Android. реализовать для определенной версии Android, поэтому они определяют большинство специальных функций ядра в зависимости от того, чего они хотят. отправить. Но я думаю, что реальная производительность, большее количество ядер на самом деле очень помогают, потому что тогда у вас не было реального способа переместите этот поток (так в оригинале) или представьте себе сетевые запросы через фоновый поток или, по крайней мере, в режиме реального времени. резьба. Я думаю, что это было самое большое изменение за последние годы: появилось больше способов распределить вашу работу, а Android не просто замедлялся, потому что все пытались захватить эту небольшую долю процессорного времени. Больше всего я думаю о многоядерности и реальной многопоточности, поддерживаемой Linux. Я думал, что это самое большое изменение.
Хорошо, так что же вы думаете о HMP и EAS? Потому что, очевидно, EAS — это новая технология, которая используется только на нескольких устройствах — например, вы используете Google Pixel, верно?
Да, сейчас я использую Galaxy S8, но у меня есть и Pixel. Я не знаю обоих настолько подробно, это просто разные реализации того, как многокластерное устройство должно действовать в зависимости от того, что происходит на устройстве в определенное время. Запустить два разных кластера с разным энергопотреблением — это довольно сложно. Вы должны соответствовать ожиданиям, когда задачи перемещаются вверх и вниз, и здесь есть задержка, и HMP был первой реальной реализацией настоящую многокластерную архитектуру для ARM, потому что, если я правильно помню, до того, как HMP начал использоваться в реальных условиях, у Samsung была первоначальная реализация, в которой либо вы использовали первые четыре ядра, например, ядра с низким энергопотреблением, либо четыре высокопроизводительных ядра, но они никогда не работали на максимальной мощности. в то же время. Но потом, благодаря HMP, ядра были готовы к использованию в любой момент, а задачи просто перемещались из одного кластера в другой и наоборот, и это работало. нет, но у вас не было столько информации от планировщика, чтобы показать ее губернатору, чтобы он действительно решил, какая частота будет использоваться при этом. конкретное время, поэтому вам приходилось иметь дело с тем, чтобы попытаться понять, что происходит через [примерно] 20 секунд, а затем, основываясь на том, что там произошло, вы решаете, что делать. делать. EAS, это больше [о] понимании того, что произойдет в будущем, и принятии решений в реальном времени на основе выходную мощность каждого ядра, а потом это куча вычислений и сложных вещей в фон
Например, энергетические модели и так далее, чтобы подкрепить все это.
Да, я так думаю, это довольно сложно, я не знаю всех подробностей, я прочитал кучу документов, но это довольно сложно, и это не просто включить переключатель и подготовить его к использованию. Меня часто спрашивают, можете ли вы реализовать EAS на телефоне XYZ. Мои ответы всегда «Это не поворот ручки, это не так, для реализации понадобилась целая команда гуглеров и ребят из Линаро». это и вам нужно что-то перемещать, что-то делать, тестировать что-то, и это слишком много работы и того, что происходит. слепой" и… да. Это сложно.
Итак, вы должны точно знать, что делаете, это не работа одного человека?
Да, вы должны знать, что делаете, любой может выбрать патчи и объединить их, но для фактического тестирования и проверки правильности работы вам понадобится подходящая машина. чтобы определить энергопотребление каждого компонента, и в ядре есть несколько таблиц, в которых вы можете записать мощность каждого ядра, и на основе этого код решит, что делать делать. Это довольно сложно. Я не думаю, что это однозначное решение всех проблем, но это определенно лучшее, что у нас есть на данный момент.
То есть вы считаете это улучшением?
Да, конечно, в милях, милях, милях отсюда. Это явное улучшение по сравнению с HMP или любой другой архитектурой, потому что, если вы понимаете, что произойдет в будущем, вы сможете реагировать гораздо быстрее. на любой запрос или что бы то ни было происходит на устройстве, именно поэтому Google Pixel такой быстрый и плавный, ведь все происходит практически в в реальном времени. Он перемещает частоты вверх и вниз, что является самым простым способом оправдать ожидания по производительности.
Я думаю, что если в будущем EAS получит большее распространение, как, по вашему мнению, это повлияет на вашу собственную разработку ядер? Вы бы по-прежнему придерживались HMP или выбрали бы уже выпущенные модели энергопотребления? Например, в OnePlus 3 [разработчики ПЗУ] повторно используют модель энергопотребления Google Pixel для EAS. Могли бы вы представить себя делающим что-то подобное?
Я, вероятно, не буду этого делать, если устройство изначально не поставляется с EAS, то я, вероятно, не буду реализовывать его каким-либо образом или в форме, потому что как я уже сказал, это довольно длительный процесс, и никто в XDA не знает об этом лучше, чем все эти инженеры, так что я думаю, мы просто пытаемся играть в Бога.
Говоря о будущем Android и ядрах, что вы думаете о недавнем выпуске Android Oreo? Как вы думаете, изменения хорошие? Вы смотрели какие-нибудь новые коммиты ядра?
На стороне ядра Nexus 6P и Nexus 5X изменений было не так много, лишь небольшие исправления кое-где. В Google Pixel они повторяли реализацию EAS и потратили некоторое время на улучшение раздела подшивок, потому что теперь подшивка вместе с Project Втрое, это похоже на разделение разных пакетов: им приходится пройти через 50 или 100 разных патчей, чтобы улучшить подшивку и разделить ее на разные процессы. В остальном это была обычная работа для большого релиза. Когда выходит новая версия платформы, вы обычно не особо возитесь с ядром, потому что возиться с ядра, вам действительно нужно много контроля качества, если вы иногда меняете одну вещь, вы слышите, что это влияет на что-то в другой подсистема. Это то, что они обычно делают, поэтому у вас не будет проблем с версией ядра между обновлениями платформы. Это просто много работы. Обычно оно того не стоило, но да, в основном это были подшивки, немного планировщика и обычные исправления безопасности. Я просмотрел их все, но ничего особо не зацепило меня. Мое внимание было обращено только на переплет.
Ну ладно, на самом деле это просто стандартные вещи.
Да, они довольно сложные, и не спрашивайте меня о деталях!
Это совсем другая тема, каково ваше мнение о F2FS в сравнении с ext4? Поскольку вы увидите, что многие люди скажут, что F2FS нестабильна и все такое и вызывает проблемы,Мне просто интересно, что вы об этом думаете.
Я тоже не знаю подробностей, потому что файловые системы довольно сложны, здесь и там много движущихся частей. Я просто процитирую инженера Google, который говорит, что, согласно их тестам, F2FS не работает быстрее, чем ext4, и, кроме того, когда они тестировали что-то для Google Pixel, F2FS не обеспечивала поддержку… Я думаю, это было блочное шифрование файлов, а ext4 поддерживает это. Это само по себе означает — просто выбросьте это. Вы должны подумать о двух вещах: над ext4 работают уже около 20 лет множество очень умных инженеров из разных компаний, и они знают, что делают. F2FS, если я правильно помню, была реализована компанией Samsung. Это совершенно новая файловая система, поэтому такие сложные вещи требуют времени для улучшения и итерации, поскольку вы можно увидеть в файловой системе Apple, которая только что была выпущена на iOS, и они собираются сделать то же самое для Mac ОПЕРАЦИОННЫЕ СИСТЕМЫ. Дела требуют времени, нужна огромная команда, чтобы делать все правильно. Я большой сторонник принципа «если это работает, не трогайте его» и того, что у нас есть сейчас — оно работает, и я не думаю, что это вызывает какие-либо проблемы с производительностью, поэтому я не вижу причин для этого. возиться с этим.
Ах, окей, это вполне справедливо! Как насчет SDCardFS переключается с FUSE? Каково будет ваше мнение по этому поводу?
Это произошло потому, что старая файловая система FUSE была одной из худших вещей, которые произошли на Android. Производительность была ужасной, между ядром и пользовательским пространством было много системных вызовов, и теперь с SDCardFS все работает правильно. С этим справится обычная файловая система, опять же конкретики не знаю так как это очень сложная штука, но то, что я читал, видел и слышал из разных подкастов от команды Android, это в основном исправило все проблемы со старой система. Это было ужасно, выступление было ужасным.
Посмотрите Часть 2, нажав на эту кнопку!