Nedávno jsme vedli rozhovor s eng.stk, vývojářem jádra blu_spark. V této části se ho ptáme na jeho původ a vývojovou práci.
Nedávno jsem dostal příležitost udělat rozhovor Senior Member XDA eng.stk, vývojář jádra blu_spark. Je k dispozici na mnoha zařízeních na našich fórech, včetně Nexus 5, OnePlus 3/T a OnePlus 5T. V této části se ptáme eng.stk na jeho původ ve vývoji a na to, jak vyvíjí jádro blu_spark.
Nejprve tedy představte sebe a své jádro. Jak se vaše jádro odlišuje od konkurence? Jaká je vaše filozofie designu pro změny jádra a jak je řešíte?
Jsem eng.stk a na XDA jsem od roku 2010. Většina z vás mě zná z mých projektů code_blue a blu_spark :)
Začal jsem na XDA psaním skriptů a různých nástrojů, hacků frameworku. Taky jsem udělal spoustu témat... Během svého působení zde jsem také přímo spolupracoval na některých projektech jako Purity ROM, Universal Kernel Manager, Kernel Adiutor a nověji Magisk a WireGuard abych jmenoval alespoň některé. V poslední době jsem také dělal nějakou práci s TWRP (zejména na zařízeních OnePlus), moduly Magisk a další nástroje/hacky [které jsou] užitečné během životního cyklu mých jaderných projektů (některé věci byly na XDA Portal, pokud si vzpomínám správně). blu_spark kernel se začalo stávat nejen jádrem, ale všestranným zážitkem mezi jádrem, toolchainy, obnovou, tématikou, nástroji, skripty atd. Ale práce s jádrem je to, co mě baví nejvíc a co mě pohání.
Vždycky mě bavilo hecovat se a vytvářet nějaký kód/skripty, když jsem měl příležitost (rozebírání elektronických hraček a základní kódování na Commodore 64 mého bratrance byla zábava). Kódování pro mě není prostředkem k dosažení cíle, ale pouze nástrojem jako některé jiné k dosažení definovaného účelu. Většinu mých vážnějších věcí a základů mé práce jsem udělal, když jsem objevil Linux během svého dospívání / časných dvacátých let. Později, někde za univerzitních časů, byl pro mě Android logickým dalším krokem: skutečným kutilským snem, kde se s hardwarem nebo softwarem dalo hodně hrát.
Nejlepší slova pro popis blu_spark jsou optimalizace a stabilita. Lidé, kteří jej používají, vědí, že se na něj mohou spolehnout. Moje sestavení jádra jsou poněkud 'zásobní' způsobem, že mám tendenci neodstraňovat některé dostupné věci z krabice a ponechávám vše volitelné, aby si lidé mohli vybrat. Nerad přidávám příliš mnoho věcí, jen měním nebo přidávám to, co považuji za nejlepší pro každý daný obor. Ovladač frekvence CPU, plánovač IO, síťové protokoly, souborové systémy atd. nebo vyladit některé laditelné parametry pro některé dané parametry nebo upstreamovat některé ovladače pro nejlepší možný výsledek. Stavím také na zakázku vyráběné toolchainy (od Linara, úžasný pohled na GCC), hlavně proto, abych z architektury dostal to nejlepší.
Sečteno a podtrženo, většina lidí ví, že jsou na blu_spark od okamžiku, kdy flashují jádro na zařízení. Stále hledám nové věci a způsoby, jak poskytnout co nejlepší UX. Bezpečně.
Řekněte nám o svém guvernérovi blu_active! Co to je, co dělá a proč je speciální?
Vím, že si lidé někdy pletou blu_active s blu_spark. blu_active je jen malá část ve srovnání se zbytkem [práce], kterou dělám.
Regulátor CPU v zásadě rozhoduje o zvýšení nebo snížení frekvence CPU podle potřeb systému. Guvernér prošel od svého vzniku několika změnami a mutacemi. Jako všechno ostatní, co dělám, jsem potřeboval něco, co naplňuje mé potřeby. Vychází z mého oblíbeného guvernéra, interaktivního guvernéra. Na začátku jsem na to jen dal nějaké upstreamové věci, ale pak jsem začal přidávat další věci, jako aktualizace CAF nebo logiku, kterou jsem viděl u jiných guvernérů a které považuji za užitečné. Přidal jsem také HMP kompatibilitu a některé další vychytávky.
Nejnovější iterace je založena na větvi Google Linux 4.4 Android, s některými upstream a CAF opravami také, ale mnohem štíhlejší než dříve. Jednoduše využijte to, co máte, naplno, odstraňte to, co nemáte. Vždy se snažím získat lepší baterii než u standardních nastavení, snížit spotřebu energie a zároveň se snažím zlepšit výkon (reálný výkon, ten, který cítíte očima a prsty, ne syntetickým nástroje).
V jednu chvíli jsem chtěl jednoduchý laditelný, aby si lidé mohli hrát s výkonem jednoduchým způsobem. Tak se zrodil Fastlane :). Logika je trochu podobná tomu, jak funguje Honda VTEC: hrajte si s časováním od daného prahu. Takže s jednoduchým přepínačem a proměnnou prahovou hodnotou by lidé mohli mít přímější a agresivnější škálování frekvence CPU. Tím, že vstoupí dříve nebo později podle zatížení systému, obchází cílová zatížení. Je plně kompatibilní s HMP a lze jej vylepšit na cluster podle potřeb lidí, jemně vyladit pro každé zařízení, na kterém běží.
Jaké vestavěné mechanismy nebo vylepšení se vám líbí/nelíbí, které poskytují OEM? tj. zvýšení vstupu Qualcommu.
Některá vylepšení uživatelského prostoru a další laditelná nastavení, která jsou nastavena v HAL (Hardware Abstraction Layers), napevno zakódované frameworky atd., mohou být někdy otravné. Samozřejmě je známo, že vývojáři jádra obcházejí některé z nich. Na Nexus 5 se například většina z nás zbavila mpdecision a pořídila si vlastní hotplug – v té době jsme měli zavedený blu_plug. Některá další zařízení měla špatné řízení teploty a vlastní řízení teploty se sysfs pro úrovně teploty, frekvenci zmírňování atd. Některá novější zařízení mají nějaké tvrdé zásady týkající se baterie, odpojování jader a dalších věcí na "nízké úrovni", které nepřinesly skutečný zisk v používání zařízení. Ve skutečnosti to někdy dokonce zničilo uživatelský zážitek, takže bylo nutné zkrotit technologie CTL a BCL.
Také si pamatuji odstranění šifrování v zařízeních, když o to šlo, všechny změny SELinux iterace přinesly změny, díky kterým předchozí hacky fungovaly jiným způsobem... některé nedávné změny zabezpečení systému Android jsou neustálou výzvou. Patří mezi ně AVB (některé části většinou známé jako dm-verity). Některé další změny způsobily omezení pro laditelné a sysfs místa, která musela být přesunuta, protože nemáme přístup do stejných míst, jako jsme měli dříve. Většina těchto omezení je relevantnější pro sériové ROM (ve kterých dělám většinu své práce), normálně to dláždí cestu a usnadňuje to, pokud jde o vlastní ROM (kde jsou omezení nižší).
V nedávných SoC, jako jsou Qualcomm Snapdragon 820 a 835, někteří OEM přidali některá vylepšení z uživatelského prostoru, která jsou vítána a řeší slepá místa v systému, ne všechny věci OEM jsou špatné. Pokud jde o zdrojový kód jádra, čím čistější a dokumentovanější zdroj je, tím lépe.
Jaké další funkce byste rádi zahrnuli? Například pokročilé ovládání barev a tak dále.
Normálně nezahrnuji věci, které osobně nepoužívám nebo které nepovažuji za užitečné. Věci, které rád dělám, kromě blu_active, zahrnují optimalizace architektury a opravy, aktualizace kryptografických věcí, plánování IO a další vychytávky úložiště/systému souborů, KCAL, rychlé nabíjení USB, síla vibrací, ovládání baterie/notifikační LED, blokování probuzení, WireGuard, atd. Vždy stavím pomocí vlastní sestavy nástrojů, jak jsem řekl dříve.
Jakou metodologii testování používáte pro své jádro? Používáte uživatelské přehledy, srovnávací testy nebo jiné vlastní postupy?
Vlastním každý telefon, pro který vyvíjím, takže jakékoli změny jsou vždy testovány mnou. Vzhledem k tomu, že denně jezdím s každým zařízením po dlouhou dobu, cokoli, co mi nevyhovuje, by nemělo být vhodné pro nikoho jiného. Když veřejně uvolním sestavení, již prošlo mnoha testy ode mě a některých dalších lidí, kterým věřím, že poskytnou užitečnou zpětnou vazbu. Vím, že někdy některé uživatele nudí neustálé fungování všech věcí, jak by měly, ale cením si především stability: vždy se v první řadě obuji v kůži uživatele.
Směřuji věci ke skutečnému případu použití, ne syntetickým testům. Tento druh softwaru je vytvořen pro lidi, ne pro stroje v back office. Výchozí bod je vždy lepší než zkušenost s akciemi na všech frontách, ale ve skutečnosti si nejnovějšího vysokého skóre Antutu tolik nevážím. Moje jádra mohou být vyladěna na tento druh benchmarku, ale není to můj konečný cíl. Vážím si některých srovnávacích testů, které jsou přímější, jako je například testování IO úložiště. Mohou poskytnout rychlý způsob, jak prosadit některé nedávno provedené změny, například.
Testuji se skladovými ROM, abych mohl mít stabilní základnu pro věci. Dělám vlastní sestavení pro vlastní ROM, ale kvůli nestálé povaze vlastních ROM s přidanými doplňky, nočními a dokonce rozdíly v implementaci některých funkcí, není možné je všechny pokrýt a poskytnout náležitou podporu všem, bohužel.
Někdy také sestavuji beta verze, abych otestoval něco konkrétního nebo když spustím sestavení beta ROM nebo náhledy pro vývojáře. Dělal jsem to na zařízeních Nexus a OnePlus, lidé si občas rádi něco otestují :)
Podívejte se na část 2: F2FS, EAS a tipy pro začínající vývojáře jádra