Rozhovor s Developer eng.stk Časť 1: Pôvod a vývoj jadra

click fraud protection

Nedávno sme robili rozhovor s eng.stk, vývojárom jadra blu_spark. V tejto časti sa ho pýtame na jeho pôvod a vývojovú prácu.

Nedávno som dostal príležitosť urobiť rozhovor senior členom XDA eng.stk, vývojár jadra blu_spark. Je k dispozícii na mnohých zariadeniach na našich fórach vrátane Nexus 5, OnePlus 3/T a OnePlus 5T. V tejto časti sa pýtame eng.stk na jeho pôvod vo vývoji a ako vyvíja jadro blu_spark.


Najprv teda predstavte seba a svoje jadro. Ako sa vaše jadro odlišuje od konkurencie? Aká je vaša filozofia dizajnu pre zmeny jadra a ako ich riešite?

Som eng.stk a na XDA pôsobím od roku 2010. Väčšina z vás ma pozná z mojich projektov code_blue a blu_spark :)

Na XDA som začal písaním skriptov a rôznych nástrojov, frameworkových hackov. Tiež som urobil veľa tém... Počas môjho pôsobenia tu som tiež priamo spolupracoval na niektorých projektoch ako Purity ROM, Universal Kernel Manager, Kernel Adiutor a nedávno Magisk a WireGuard aby som vymenoval aspoň niektoré. V poslednej dobe som tiež robil nejakú prácu s TWRP (najmä na zariadeniach OnePlus), moduly Magisk a ďalšie nástroje/hacky [ktoré sú] užitočné počas životného cyklu mojich projektov jadra (niektoré veci boli na portáli XDA, ak si spomínam správne). blu_spark kernel sa začalo stávať nielen jadrom, ale všestranným zážitkom medzi jadrom, toolchainmi, obnovou, témami, nástrojmi, skriptami atď. Ale práca na jadre je to, čo ma baví najviac a čo ma poháňa.

Vždy ma bavilo hackovať a zostavovať nejaký kód/skripty, keď som mal príležitosť (rozoberanie elektronických hračiek a základné kódovanie na Commodore 64 môjho bratranca bola zábava). Pre mňa kódovanie nie je prostriedkom na dosiahnutie cieľa, ale len nástrojom ako niektoré iné na dosiahnutie definovaného účelu. Väčšina mojich vážnejších vecí a základov mojej práce som urobila, keď som objavil Linux počas dospievania/začiatku dvadsiatky. Neskôr, niekde v časoch univerzity, bol pre mňa Android logickým ďalším krokom: skutočným drotárskym snom, kde sa dá veľa hrať s hardvérom alebo softvérom.

Najlepšie slová na opis blu_spark sú optimalizácia a stabilita. Ľudia, ktorí ho používajú, vedia, že sa naň môžu spoľahnúť. Moje zostavy jadra sú trochu „zásobné“ takým spôsobom, že mám tendenciu neodstrániť niektoré dostupné veci z krabice, pričom všetko ponechávam ako voliteľné, aby si ľudia mohli vybrať. Nerád pridávam príliš veľa vecí, len mením alebo pridávam to, čo považujem za najlepšie pre každý daný odbor. Ovládač frekvencie CPU, plánovač IO, sieťové protokoly, súborové systémy atď. alebo vylaďte niektoré laditeľné parametre pre niektoré dané parametre alebo upstream niektoré ovládače, aby ste dosiahli čo najlepší výsledok. Tiež vytváram na mieru vyrobené toolchainy (od Linara, úžasný pohľad na GCC), hlavne preto, aby som z architektúry dostal to najlepšie.

Zrátané a podčiarknuté, väčšina ľudí vie, že sú na blu_spark od momentu, keď flashujú jadro na zariadení. Stále hľadám nové veci a spôsoby, ako poskytnúť čo najlepšie UX. Bezpečne.

Povedzte nám o svojom blu_active guvernérovi! Čo to je, na čo slúži a prečo je výnimočné?

Viem, že si ľudia niekedy mýlia blu_active s blu_spark. blu_active je len malá časť v porovnaní so všetkým ostatným [prácou], ktorú robím.

CPU Governor v podstate rozhoduje o zvýšení alebo znížení frekvencií CPU podľa potrieb systému. Guvernér mal od začiatku niekoľko zmien a mutácií. Ako všetko ostatné, čo robím, aj ja som potreboval niečo, čo napĺňalo moje potreby. Je založený na mojom obľúbenom guvernérovi, interaktívnom guvernérovi. Na začiatku som naň dal len nejaké upstream veci, ale potom som začal pridávať nejaké ďalšie veci, ako sú aktualizácie CAF alebo logiku, ktorú som videl u iných guvernérov a ktoré považujem za užitočné. Pridal som aj HMP kompatibilitu a nejaké ďalšie vychytávky.

Najnovšia iterácia je založená na pobočke Google Linux 4.4 Android, s niektorými upstream a CAF opravami, ale je oveľa štíhlejšia ako predtým. Jednoducho využite to, čo máte, naplno, odstráňte to, čo nemáte. Vždy sa snažím získať lepšiu batériu ako pri skladových nastaveniach, znižujem spotrebu energie a zároveň sa snažím zlepšovať výkon (výkon v reálnom živote, ten, ktorý cítite očami a prstami, nie syntetickým nástroje).

V určitom okamihu som chcel jednoduchý laditeľný, aby sa ľudia mohli hrať s výkonom jednoduchým spôsobom. Takto sa zrodil Fastlane :). Logika je trochu podobná tomu, ako funguje Honda VTEC: hrajte sa s časovaním od daného prahu. Takže s jednoduchým prepínačom a variabilnou prahovou hodnotou by ľudia mohli mať priamejšie a agresívnejšie škálovanie frekvencie procesora. Zadanie skôr alebo neskôr podľa zaťaženia systému a obídenie cieľových zaťažení. Je plne kompatibilný s HMP a môže byť vyladený na klaster podľa potrieb ľudí, jemne vyladený pre každé zariadenie, na ktorom beží.

Aké vstavané mechanizmy alebo vylepšenia sa vám páčia/nepáčia, ktoré výrobcovia OEM poskytujú? tj zvýšenie vstupu Qualcommu.

Niektoré vylepšenia používateľského priestoru a ďalšie laditeľné nastavenia, ktoré sú nastavené v HAL (Hardware Abstraction Layers), napevno zakódované prvky rámca atď., môžu byť niekedy nepríjemné. Samozrejme, je známe, že vývojári jadra obchádzajú niektoré z nich. Na Nexus 5 sa napríklad väčšina z nás zbavila mpdecision a zaobstarala si vlastný hotplug – vtedy sme mali zavedený blu_plug. Niektoré ďalšie zariadenia mali zlý tepelný manažment a vlastnú tepelnú kontrolu so sysfs pre úrovne teploty, frekvenciu zmierňovania atď. Niektoré novšie zariadenia majú určité prísne zásady týkajúce sa batérie, odpájania jadier a iných vecí na „nízkej úrovni“, ktoré nepriniesli skutočný zisk v používaní zariadenia. V skutočnosti to niekedy zničilo používateľský zážitok, takže bolo potrebné skrotiť technológie CTL a BCL.

Spomínam si tiež na odstránenie šifrovania v zariadeniach, keď to bola vec, všetky zmeny iterácie SELinux zaviedli zmeny, vďaka ktorým predchádzajúce hacky fungovali iným spôsobom... niektoré nedávne zmeny zabezpečenia systému Android sú neustálou výzvou. Medzi ne patrí AVB (niektoré časti väčšinou poznáme ako dm-verity). Niektoré ďalšie zmeny spôsobili obmedzenia pre laditeľné a sysfs miesta, ktoré museli byť presunuté, pretože nemáme prístup na rovnaké miesta, aké sme mali predtým. Väčšina týchto obmedzení je relevantnejšia pre ROM ROM (v ktorých robím väčšinu svojej práce), zvyčajne to dláždi cestu a uľahčuje to, pokiaľ ide o vlastné ROM (kde sú obmedzenia nižšie).

V nedávnych SoC, ako sú Qualcomm Snapdragon 820 a 835, niektorí výrobcovia OEM pridali niekoľko vylepšení z používateľského priestoru, ktoré sú vítané a riešia slepé miesta v systéme, nie všetky veci OEM sú zlé. Pokiaľ ide o zdroj jadra, čím je zdroj čistejší a zdokumentovaný, tým lepšie.

Aké ďalšie funkcie by ste chceli zahrnúť? Napríklad pokročilé ovládanie farieb atď.

Normálne nezahŕňam veci, ktoré osobne nepoužívam alebo ktoré nepovažujem za užitočné. Veci, ktoré rád robím, okrem blu_active, zahŕňajú optimalizáciu a opravy architektúry, aktualizácie kryptografických vecí, plánovanie IO a iné vychytávky úložiska/systému súborov, KCAL, rýchle nabíjanie cez USB, sila vibrácií, ovládanie batérie/upozornenia LED, blokátory prebudenia, WireGuard, atď. Vždy staviam pomocou vlastnej zostavy nástrojov, ako som už povedal.

Akú metodiku testovania používate pre svoje jadro? Používate používateľské prehľady, benchmarky alebo iné vlastné postupy?

Vlastním každý telefón, pre ktorý vyvíjam, takže všetky zmeny sú vždy testované mnou. Keďže denne jazdím na každom zariadení dlhú dobu, čokoľvek, čo považujem za nevhodné pre mňa, by nemalo byť vhodné pre nikoho iného. Keď verejne vydám zostavu, už má za sebou množstvo testov odo mňa a niektorých ďalších ľudí, ktorým verím, že poskytnú užitočnú spätnú väzbu. Viem, že niektorí používatelia sa niekedy nudia, keď neustále všetky veci fungujú tak, ako by mali, ale predovšetkým si cením stabilitu: vždy sa v prvom rade obujem v koži používateľa.

Riadim veci smerom k reálnemu prípadu použitia, nie syntetickým testom. Tento druh softvéru je vytvorený pre ľudí, nie pre stroje v back office. Počiatočný bod je vždy lepší ako skúsenosti z akcií na všetkých frontoch, ale najnovšie vysoké skóre Antutu si až tak nevážim. Moje jadrá môžu byť vyladené podľa tohto druhu benchmarku, ale nie je to môj konečný cieľ. Oceňujem niektoré referenčné hodnoty, ktoré sú priamejšie, ako napríklad testovanie IO úložiska. Môžu poskytnúť rýchly spôsob, ako uplatniť niektoré nedávno vykonané zmeny, napríklad.

Testujem so skladovými ROM, aby som mohol mať stabilný základ pre veci. Vytváram vlastné zostavy pre vlastné ROM, ale kvôli nestálej povahe vlastných ROM s pridanými doplnkami, nočnými a dokonca rozdiel v implementácii niektorých funkcií, nie je možné ich všetky pokryť a poskytnúť náležitú podporu každému, bohužiaľ.

Niekedy tiež zostavujem beta verzie, aby som otestoval niečo konkrétne alebo keď spustím zostavy beta ROM alebo ukážky pre vývojárov. Robil som to na zariadeniach Nexus a OnePlus, ľudia si občas radi niečo otestujú :)


Pozrite si časť 2: F2FS, EAS a tipy pre začínajúcich vývojárov jadra