Частина 1 інтерв’ю з Франциско Франко, розробником Franco Kernel та інших програм для різних пристроїв.
Нещодавно я мав задоволення взяти інтерв’ю у людини, яка стоїть за одним із найпопулярніших ядер Android, Franco Kernel. Наразі ядро доступне на багатьох різних пристроях, включаючи різні пристрої Nexus і OnePlus, а також Google Pixel / Pixel XL.
У цій частині ми розповідаємо про шлях Франсіско Франко до розробки ядра та його думку про зміни, яких Android зазнав за ці роки.
Я Адам Конвей тут на XDA, щоб взяти інтерв’ю у Франциско Франко, розробника ядра Franco! Ви хочете представитися?
Звичайно, мене звуть Франциско, як ви щойно сказали, і, мабуть, я вже на XDA 1 мільйон років! Робив усілякі речі. ядра, програми, і останнім часом я трохи більше повільно використовую ядра, тому що через деякий час це стає втомливим, але я все ще на повну силу на більшості своїх пристроїв.
Гаразд, я припускаю, що багато людей були б знайомі з вашою роботою, але багато людей не були б знайомі з реальною особою, яка стоїть за вашою роботою. Тож я думаю, чи справді у вас є якийсь минулий досвід до ядер? Як будь-який ступінь інформатики або щось подібне заздалегідь?
Я завжди захоплювався комп’ютерами, як, здається, будь-яка дитина під час дитинства. Після того, як мені виповнилося 18 років, я вирішив вступити до університету, як і всі інші, і, здається, брав інформатики чи щось подібне, але приблизно через рік я зрозумів, що це не те, чим я насправді захоплююся приблизно. Після того року мої очікування почали падати, тому що це були лише розмови та жодних дій, а я був почав відчувати нудьгу - не тому, що я був кращим за інших, я був просто середнім, - а через фактичні дисципліни не були точно що я хотів. Тому я поговорив з батьками, і вони знали, що я не дуже щасливий від цього. На Різдво 2010 року я отримав свій перший телефон Android. LG P500, це бюджетний телефон, дуже дешевий, але я знав, що він працює під управлінням Linux, і моєю улюбленою дисципліною в університеті була комп’ютерна архітектура чи щось таке, операційні системи. І ми трохи вивчали оболонку і трохи говорили про ядро Linux і про що був частиною ядра та всіх зв’язків у ядрі, і фактичної операційної системи, і так далі був захоплюючий для мене. І тоді я разом з другом почав перезбирати ядро Linux для свого старого ноутбука. Ми виходили з ладу наші ноутбуки 100 разів, роблячи це, але ми навчилися через процес. А потім я почав грати зі своїм LG, і, мабуть, перше, що я зробив, це спробував підвищити продуктивність, тому що цей пристрій насправді був досить поганим. Тому найкраще, що я міг зробити, це просто переглянути стандартні параметри ядра Linux для реальних керування пам’яттю та таке інше, і просто спробуйте знайти щось трохи краще, ніж те, що вже було там. Я тоді трохи розважився.
Здається, я не розповідав про це раніше в попередніх інтерв’ю, але тоді цей пристрій використовував стару файлову систему під назвою YAFFS — це означає Yet Another Flash Файлова система, але вона була досить повільною, коли ми намагалися підключити як диск підкачки з оперативною пам’яттю, тому я не пам’ятаю деталей, але ми робили багато різних поекспериментували з цим, і в кінцевому підсумку ми встановили 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, тому вони диктують більшість спеціальних функцій ядра, виходячи з того, що вони хочуть відправити. Але я вважаю, що фактична продуктивність, більше ядер насправді дуже допомагають, тому що тоді у вас не було жодного реального способу перемістіть цей потік (sic), або уявіть мережеві запити через фоновий потік, або принаймні в реальному часі різьблення. Я вважаю, що це була найбільша зміна за всі роки, мати більше способів розподілити свою роботу, а не мати Android просто сповільнюватися, тому що всі намагаються захопити цю невелику частку ЦП. Більше всього я вважаю багатоядерність і справжню справжню багатопотоковість за підтримки Linux. Я думав, що це [було] найбільшою зміною.
Добре, тож яка ваша думка щодо HMP проти EAS? Оскільки, очевидно, EAS лише новий і використовується лише на кількох пристроях – наприклад, ви використовуєте Google Pixel, чи не так?
Так, зараз я користуюся Galaxy S8, але в мене також є Pixel. Я не знаю [багато] деталей обох, це просто різні реалізації того, як має діяти багатокластерний пристрій на основі того, що відбувається на пристрої в певний час. Запуск двох різних кластерів з двома різними енергоспоживаннями досить складний. Ви повинні відповідати очікуванням щодо завдань, які рухаються вгору та вниз, і тут є затримка, і HMP була першою реальною реалізацією справжня багатокластерна архітектура для ARM, тому що, якщо я правильно пам’ятаю, до того, як HMP почав використовуватися в реальному світі, у Samsung був початковий де ви використовували перші чотири ядра, як-от ядра з низьким енергоспоживанням, або чотири високопродуктивні ядра, але вони ніколи не працювали на той самий час. Але пізніше з HMP ядра були готові до використання в будь-який час, а завдання просто переходили з одного кластера в інший і навпаки, і це спрацювало але у вас не було стільки інформації від планувальника, щоб показати це губернатору, щоб фактично вирішити, яка частота буде використана певний час, тож вам довелося мати справу, наприклад, із спробами зрозуміти, що відбувається за [приблизно] 20 секунд, а потім на основі того, що там сталося, ви вирішуєте, що робити робити. EAS, це більше [про] розуміння того, що станеться в майбутньому, і прийняття рішень у реальному часі на основі вихідна потужність кожного ядра, а потім це купа обчислень і складних речей у фон
Наприклад, енергетичні моделі тощо, щоб все це підтвердити.
Так, мабуть, це досить складно, я не знаю всіх деталей, я прочитав купу документів, але це досить складно, і це не просто ввімкнути вимикач і підготувати це до використання. Я часто запитую, чи можете ви застосувати EAS на телефоні XYZ. Мої відповіді завжди «Це не обертання ручки, це не так, для впровадження знадобилася ціла команда співробітників Google і хлопців із Linaro і вам потрібно переміщати речі, робити речі, тестувати речі, і це просто занадто багато роботи сліпий" і… так. Це важко.
Отже, ви повинні точно знати, що ви робите, це не робота однієї людини?
Так, ви повинні знати, що ви робите, будь-хто може вибрати патчі та об’єднати їх, але фактичне тестування та переконання, що все працює правильно, вам знадобиться відповідна машина щоб визначити енергоспоживання кожного компонента, і в ядрі є купа таблиць, де можна записати потужність кожного ядра, і на основі цього код вирішить, що робити робити. Це досить складно. Я не думаю, що це остаточне вирішення всіх проблем, але це точно найкраще, що ми маємо зараз.
Отже, ви сприймаєте це як покращення?
Так, звичайно, милі милі милі далеко. Це безсумнівне покращення порівняно з 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 різних патчів, щоб покращити зв’язування та розділити його на різні процеси. Окрім цього, це була звичайна робота для великого випуску. Коли виходить новий випуск платформи, ви зазвичай не возитеся з ядром так багато, тому що возитися з ядро вам насправді потрібно багато QA, якщо ви інколи змінюєте щось одне, ви чуєте, що це впливає на щось інше підсистема. Це те, що вони зазвичай роблять, тому у вас немає стрибка версії ядра між оновленнями платформи. Це просто багато роботи. Зазвичай це не варте того, але так, це були переважно підшивки, трохи планувальника та звичайні виправлення безпеки. Я пройшов через них усі, але нічого не привернуло мене до уваги. Мою увагу звернув лише на підшивку.
Гаразд, просто стандартні речі.
Так, вони досить складні, і не питайте в мене конкретики!
Це зовсім інша тема, яка ваша думка щодо F2FS проти ext4? Оскільки ви побачите, що багато людей скажуть, що F2FS нестабільна і таке інше, і викликає проблеми,Мені просто цікаво, що ви думаєте про це.
Я також не знаю [про] специфіку, тому що файлові системи досить складні, тут і там є багато рухомих частин. Я просто процитую інженера Google, який каже, що, виходячи з їхнього тесту, F2FS не працює швидше, ніж ext4, і, крім того, коли вони тестували щось для Google Pixel, F2FS не забезпечувала підтримку… Я думаю, це було блокове шифрування файлів, тоді як ext4 для підтримки це. Тож лише це означає - просто відкиньте його. Ви повинні подумати про дві речі: над ext4 працюють приблизно 20 років з багатьма дуже розумними інженерами з різних компаній, і вони знають, що роблять. F2FS був, якщо я правильно пам’ятаю, реалізований Samsung. Це досить нова файлова система, тому такі складні речі, як і ви, потребують часу для вдосконалення та повторення можуть побачити файлову систему Apple, яку щойно випустили для iOS, і вони збираються зробити те саме для Mac ОС. Речі потребують часу, вам потрібна величезна команда, щоб зробити ці речі правильно. Я великий прихильник принципу «якщо це працює, не чіпайте його», і те, що ми маємо зараз, це працює, і я не думаю, що це створює проблеми з продуктивністю, тому я не бачу причини возитися з ним.
Ой, гаразд, це справедливо! А як на рахунок SDCardFS перемикається з FUSE? Яка б ваша думка щодо цього?
Це сталося тому, що стара файлова система FUSE була однією з найгірших речей, які траплялися на Android. Продуктивність була жахливою, було багато системних викликів між ядром і простором користувача, і тепер із SDCardFS це зроблено належним чином. З цим справляється звичайна файлова система, знову ж таки, я не знаю деталей, оскільки це дуже складна річ, але те, що я маю прочитаний, побачений і почутий у різних подкастах від команди Android, він фактично вирішив усі проблеми зі старим система. Це було жахливо, виступ був жахливим.
Перегляньте частину 2, натиснувши цю кнопку!