Francisco Franco z rozhovoru Franca Kernela, část 1

Část 1 rozhovoru s Franciscem Francem, vývojářem Franco Kernel a dalších aplikací pro mnoho různých zařízení.

Nedávno jsem měl to potěšení vyzpovídat muže, který stojí za jedním z nejpopulárnějších jader Androidu vůbec, Franco Kernel. V současné době je jádro dostupné na mnoha různých zařízeních, včetně různých zařízení Nexus a OnePlus a Google Pixel / Pixel XL.

V této části mluvíme o cestě Francisca Franca do vývoje jádra a jeho názoru na změny, kterými Android v průběhu let prošel.


Jsem Adam Conway zde na XDA, abych udělal rozhovor s Franciscem Francem, vývojářem Franco Kernel! Chcete se představit?

Jistě, jmenuji se Francisco, jak jste právě řekl, a myslím, že jsem na XDA již 1 milion let! Dělal jsem nejrůznější věci. jádra, aplikace, a v poslední době jsem s jádry trochu víc flákal, protože to po chvíli unavuje, ale na většině svých zařízení jsem stále v plné síle.

Dobře, takže si myslím, že mnoho lidí bude znát vaši práci, ale mnoho lidí nebude obeznámeno se skutečnou osobou, která za prací stojí. Takže předpokládám, že opravdu máte nějaké zkušenosti z minulosti před jádry? Jako nějaký titul z informatiky nebo něco podobného předtím?

Vždycky jsem byl nadšený pro počítače, asi jako každé dítě, když jsem vyrůstal. Když mi bylo 18 a rozhodl jsem se jít na univerzitu jako každý jiný a myslím, že jsem to bral počítačová věda nebo tak něco, ale po roce nebo tak jsem si uvědomil, že to není to, co jsem ve skutečnosti vášnivý o. Po tom roce moje očekávání začala klesat, protože to byly jen řeči a žádná akce, a já jsem to udělal začínám se nudit - ne proto, že bych byl lepší než kdokoli jiný, byl jsem prostě průměrný - ale skutečné disciplíny nebyly přesně co jsem chtěl. Tak jsem mluvil s rodiči a oni si byli vědomi, že z toho nejsem moc šťastný. Během Vánoc roku 2010 jsem dostal svůj první telefon s Androidem. LG P500, to je levný telefon, velmi levný, ale věděl jsem, že běží na Linuxu a moje oblíbená disciplína na univerzitě byla počítačová architektura nebo tak něco, operační systémy. A učili jsme se trochu shellu a povídali si trochu o linuxovém jádře ao čem byl součástí jádra a veškeré konektivity v jádře a skutečný operační systém a to byl fascinující pro mě. A pak jsem začal společně s kamarádem přestavovat linuxové jádro pro můj starý notebook. Při tom jsme stokrát havarovali naše notebooky, ale během procesu jsme se to naučili. A pak jsem si začal hrát se svým LG a myslím, že první věc, kterou jsem udělal, bylo pokusit se posouvat trochu více výkonu, protože to zařízení bylo vlastně dost mizerné. Takže to nejlepší, co jsem mohl udělat, bylo projít si standardní parametry linuxového jádra správu paměti a tak, a zkuste najít něco trochu lepšího, než co už bylo tam. Pak jsem se trochu pobavil.

Myslím, že jsem to předtím v předchozích rozhovorech neřekl, ale tehdy to zařízení používalo starý souborový systém zvaný YAFFS – to znamená Yet Another Flash Souborový systém, ale bylo to docela pomalé, když jsme se pokusili připojit jako odkládací disk se zálohou RAM, takže si nepamatuji podrobnosti, ale dělali jsme různé druhy experimentovali jsme s tím a nakonec jsme namontovali Dalvik na paměť RAM, která musela být znovu sestavena při každém restartu, protože, jak víte, RAM mizí každý čas restartu. Ale docela to zrychlilo otevírání aplikací a spouštění benchmarků, takže jsme byli spokojeni. Takže poté jsem začal jít trochu hlouběji a pokusil jsem se zkompilovat zdrojové kódy jádra LG pro zařízení a udělal jsem všemožné špatné úsudků a všemožných omylů - Wi-Fi síť, cokoliv - vše, co si dokážete představit od někoho s ne Zkušenosti. Bylo to zábavné, hodně jsem se naučil. Myslím, že po roce nebo šesti měsících [toho] dělání jsem se trochu více soustředil a věděl jsem trochu lépe, co musím ke stažení. To je to, co na konci dne všichni chceme. Poté se mi podařilo získat nějaké dary a přejít na jiná zařízení. Myslím, že Nexus S, pak Galaxy Nexus a po tomto období se mi podařilo dostat svou první aplikaci. Myslím, že jsem měl velké štěstí a dokázal jsem si financovat nákup nových zařízení a odtud to vybouchlo. Takže si myslím, že na konci dne vděčím za všechno, neřekl bych XDA, ale nástupiště které nám poskytuje XDA.

A komunita tak trochu za tím a tak.

Ano ano, myslím platformu, to je komunita a skutečná fóra. Pro každého, kdo poslouchá, toto není placený sponzor nebo tak něco, nejsem placen za to, abych to řekl, je to prostě pravda!

Neexistuje žádné video, lidé nevidí, jak vám míří zbraň na hlavu, to je v pořádku.

Hahaha, jo, ale někdo řekne, že jsem placený za to, abych to řekl, tak to řeknu! Ale ano, ano, byla to pro mě úžasná platforma, abych mohl stavět skvělé věci, hodně se učit, všechno jsem se tam naučil tím, že jsem většinou dělal chyby a při učení stále dělám svůj férový podíl na problémech. Zničil jsem svůj Xiaomi Redmi Note 3, uh, bootloader je právě zničený. Takže to musím znovu propojit s mým počítačem s Windows, který tam sedí, a musím všechno přeflashovat a leží tu tak tři měsíce. Od všech se mi dostává nejrůznější nenávisti, že tomu zařízení nevěnuji pozornost, a tak stále dělám [chyby], myslím, takže i po všech těch letech je stále co se učit a já jsem měl velké štěstí, že jsem touto cestou prošel a skvělý.

No, myslím, že když jsi začal s... Bylo to LG P500?

Ano, ano.

Před kolika lety to bylo? Protože to muselo být kolem původních verzí Androidu, že? Okolo Froyo nebo tak něco?

Jo, to bylo dodáno s Froyem a pár měsíců poté bylo upgradováno na Gingerbread. Myslím, že to zařízení bylo v roce 2010, začátek roku 2011, pravděpodobně dříve. Vím, že můj účet na XDA byl vytvořen v prosinci 2010, ale měl jsem zařízení předtím. Takže asi v tu dobu, jo.

Jak se Android od té doby vyvíjel z hlediska výkonu? Jak se pro vás změnilo psaní jader tehdy a jejich psaní nyní? A předpokládám, jaký je váš názor na změny.

Pokud jde o jádro, myslím, že jsme se vyvinuli se skutečným jádrem Linuxu a všemi změnami, které tým Android skutečně chtěl implementovat pro určité vydání Androidu, takže diktují většinu speciálních funkcí jádra na základě toho, co chtějí na loď. Ale myslím, že skutečný výkon, více jader ve skutečnosti hodně pomáhá, protože tehdy jste neměli žádnou skutečnou cestu přesunout toto vlákno (sic), nebo si představit síťové požadavky přes vlákno na pozadí nebo alespoň skutečné v reálném čase závitování. Myslím, že to byla největší změna za ta léta, mít více způsobů, jak rozložit svou práci, a ne, aby se Android jen zpomalil, protože se každý snaží urvat ten malý podíl CPU. Více než cokoli jiného si myslím, že vícejádrový a skutečný skutečný multi-threading podporovaný Linuxem. Myslel jsem, že to byla největší změna.

Aha, tak jaký je váš názor na HMP vs EAS? Protože EAS je zjevně pouze nový a používá se pouze v několika zařízeních - jako používáte Google Pixel, že?

Ano, v současné době používám Galaxy S8, ale mám také Pixel. Neznám oba v tak [příliš] detailech, jsou to jen různé implementace toho, jak by se mělo multiclusterové zařízení chovat na základě toho, co se děje na zařízení v určitých časech. Provozovat dva různé clustery se dvěma různými spotřebami energie je docela těžké. Musíte splnit očekávání úkolů, které se pohybují nahoru a dolů, a je zde zahrnuta latence a HMP byla první skutečnou implementací skutečná víceshluková architektura pro ARM, protože pokud si dobře pamatuji, předtím, než se HMP začalo používat v reálném světě, měl Samsung počáteční implementace, kdy jste buď používali první čtyři jádra, například nízkoenergetická jádra, nebo čtyři vysoce výkonná jádra, ale nikdy neběžela stejný čas. Ale poté s HMP byla jádra připravena k použití kdykoli a úkoly se jen přesunuly z jednoho clusteru do druhého a naopak a fungovalo to ven, ale neměli jste tolik informací z plánovače, abyste to ukázali guvernérovi, aby se skutečně rozhodl, jaký druh frekvence bude při tom použit konkrétní čas, takže jste se museli vypořádat s tím, že jste se například snažili porozumět tomu, co se stane za [asi] 20 sekund, a pak se na základě toho, co se tam stalo, rozhodnete, co dělat. EAS, je to více [o] pochopení toho, co se stane v budoucnu, a rozhodování v reálném čase na základě výkony každého jádra a pak je to hromada výpočtů a složitých věcí v Pozadí

Jako energetické modely a tak dále, aby to vše podpořilo.

Ano, asi ano, je to docela složité, neznám všechna specifika, četl jsem spoustu dokumentů, ale je to docela složité a není to jen zapnutí vypínače a připravení k použití. Dostávám tuto otázku hodně, můžete implementovat EAS na telefonu XYZ. Moje odpovědi jsou vždy „Není to otáčení knoflíkem, není to tak, implementace vyžadovala celý tým zaměstnanců společnosti Google a lidí z Linara to a musíte věci přesouvat, dělat věci, testovat věci a to je prostě příliš mnoho práce a práce slepý" a… ano. Je to těžké.

Takže musíte přesně vědět, co děláte, není to práce jednoho muže?

Ano, musíte vědět, co děláte, každý si může vybrat záplaty a sloučit je, ale skutečné testování a ujištění, že to funguje správně, a potřebovali byste správný stroj zjistit spotřebu energie každé komponenty a v jádře je spousta tabulek, kam můžete zapsat výkon každého jádra, a na základě toho se kód rozhodne, co dělat. Je to docela složité. Nemyslím si, že je to definitivní řešení všech problémů, ale rozhodně je to to nejlepší, co teď máme.

Takže to vnímáte jako zlepšení?

Jo jasně, míle míle daleko. Je to jednoznačné zlepšení oproti HMP nebo jakékoli jiné architektuře, protože pokud pochopíte, co se stane v budoucnu, můžete reagovat mnohem rychleji na jakýkoli požadavek nebo cokoli, co se děje na zařízení, proto je Google Pixel tak rychlý a tak hladký, protože vše probíhá téměř v reálný čas. Posouvá frekvence nahoru a dolů, což je nejjednodušší způsob, jak splnit očekávání výkonu.

Myslím, že pokud tedy v budoucnu dojde k většímu přijetí EAS, jak to podle vás ovlivní váš vlastní vývoj, pokud jde o jádra? Zůstali byste stále u HMP nebo byste šli s již vydanými energetickými modely? Například na OnePlus 3 [vývojáři ROM] znovu používají energetický model z Google Pixel pro EAS. Viděl bys sám sebe dělat něco takového?

Pravděpodobně to neudělám, pokud zařízení nebude dodáváno s EAS pro začátek, pak jej pravděpodobně žádným způsobem nebo formou neimplementuji, protože jak jsem řekl, je to docela zdlouhavý proces a nikdo v XDA neví lépe než všichni tito inženýři, takže si myslím, že se jen snažíme hrát na Boha.

Když mluvíme o budoucnosti Androidu a jader, jaký je váš názor na nedávné vydání Android Oreo? Myslíte si, že změny jsou dobré? Podívali jste se na některý z nových kernelových commitů?

U zařízení Nexus 6P a Nexus 5X nebylo na straně jádra tolik změn, jen tu a tam byly drobné opravy. Na Google Pixel iterovali implementaci EAS a strávili nějaký čas vylepšováním sekce pojiva, protože nyní pojivo spolu s Projectem Treble, je to jako rozdělování různých balíčků, takže musí projít 50 nebo 100 různými záplatami, aby se pojivo vylepšilo a bylo rozděleno do různých procesy. Kromě toho to byla jen normální práce pro velké vydání. Když je k dispozici nová verze platformy, obvykle si s jádrem tolik nelámete hlavu, protože kernel, ve skutečnosti potřebujete hodně QA, pokud někdy změníte jednu věc, uslyšíte, že to ovlivní něco v druhé subsystému. To je to, co obvykle dělají, to je důvod, proč nemáte mezi upgrady platformy narážku na verzi jádra. Je to prostě hodně práce. Obvykle to za to nestojí, ale ano, byly to většinou pořadače, trochu plánovače a obvyklé opravy zabezpečení. Prošel jsem je všechny, ale nic mě opravdu nenapadlo. Moje pozornost byla přivedena pouze k pořadači.

Aha, takže opravdu jen standardní věci.

Jo, jsou docela složité a na podrobnosti se mě neptejte!

To je úplně jiné téma, jaký je váš názor na F2FS proti ext4? Protože byste viděli, že spousta lidí řekne, že F2FS je nestabilní a podobně a způsobuje problémy,Jen by mě zajímalo, jaký na to máte názor.

Nevím ani [o] specifikách, protože souborové systémy jsou docela těžké, sem tam je hodně pohyblivých částí. Budu jen citovat inženýra Google, který říká, že na základě jejich testu F2FS nepracuje rychleji než ext4 a navíc když testovali věci pro Google Pixel, F2FS neposkytoval podporu pro... Myslím, že to bylo šifrování bloků souborů, zatímco ext4 pro podporuje to. Takže to samo o sobě znamená -- prostě to sešrotovat. Musíte myslet na dvě věci, na ext4 se pracuje asi 20 let se spoustou velmi chytrých inženýrů z různých společností a vědí, co dělají. F2FS byl, pokud si dobře vzpomínám, implementován společností Samsung. Je to docela nový souborový systém, takže věci tak komplikované jako tyto vyžadují čas na zlepšení a iteraci, stejně jako vy můžete vidět ze souborového systému Apple, který byl právě vydán pro iOS, a udělají totéž pro Mac OS. Věci vyžadují čas, na správné provedení těchto věcí potřebujete obrovský tým. Jsem velkým zastáncem „pokud to funguje, nedotýkejte se toho“ a toho, co právě teď máme – funguje to a nemyslím si, že by vám to dělalo nějaké problémy s výkonem, takže nevidím důvod, proč machrovat s tím.

Aha, to je fér! Co takhle SDCardFS přecházíte z FUSE? Jaký by na to byl váš názor?

Stalo se tak proto, že starší souborový systém FUSE byl jednou z nejhorších věcí, které se na Androidu staly. Výkon byl hrozný, mezi jádrem a uživatelským prostorem bylo mnoho systémových volání a nyní s SDCardFS je to provedeno správně. Je to normální souborový systém, který se s tím vypořádá, opět neznám podrobnosti, protože je to velmi komplikovaná věc, ale co jsem číst a vidět a slyšet z různých podcastů od týmu Android je v podstatě vyřešeny všechny problémy se starými Systém. To bylo docela hrozné, výkon byl hrozný.


Podívejte se na část 2 kliknutím na toto tlačítko!