Francisco Franco z wywiadu z Franco Kernel, część 1

Część 1 wywiadu z Francisco Franco, twórcą Franco Kernel i innych aplikacji na wiele różnych urządzeń.

Niedawno miałem przyjemność przeprowadzić wywiad z człowiekiem stojącym za jednym z najpopularniejszych jąder Androida w historii, jądrem Franco. Obecnie jądro jest dostępne na wielu różnych urządzeniach, w tym na różnych urządzeniach Nexus i OnePlus oraz Google Pixel / Pixel XL.

W tej części porozmawiamy o podróży Francisco Franco w kierunku rozwoju jądra i jego opinii na temat zmian, jakie przeszedł Android na przestrzeni lat.


Nazywam się Adam Conway i tu na XDA przeprowadzam wywiad z Francisco Franco, twórcą jądra Franco! Chcesz się przedstawić?

Jasne, mam na imię Francisco, jak właśnie powiedziałeś, i myślę, że jestem na XDA już od miliona lat! Robiłem różne rzeczy. Jądra, aplikacje, a ostatnio trochę więcej zapuściłem jądra, ponieważ po pewnym czasie staje się to męczące, ale nadal mam pełną moc na większości moich urządzeń.

OK, więc myślę, że wiele osób znałoby twoją pracę, ale wiele osób nie znałoby prawdziwej osoby stojącej za twoją pracą. Więc myślę, że naprawdę masz jakieś doświadczenia przed jądrami? Jak wcześniej uzyskać dyplom z informatyki lub coś podobnego?

Zawsze pasjonowałem się komputerami, jak chyba każde dziecko w okresie dorastania. Kiedy skończyłem 18 lat, zdecydowałem się pójść na uniwersytet, jak wszyscy inni, i myślę, że podjąłem informatyka czy coś, ale po mniej więcej roku stwierdziłem, że to nie jest to, co mnie pasjonuje o. Po tym roku moje oczekiwania zaczęły spadać, ponieważ były to tylko rozmowy, a nie działania, i tak było zaczynałem się nudzić – nie dlatego, że byłem lepszy od innych, po prostu byłem przeciętny – ale przez samą dyscyplinę nie były Dokładnie czego chciałem. Rozmawiałam więc z rodzicami i oni wiedzieli, że nie jestem z tego powodu zbyt szczęśliwa. Podczas Świąt Bożego Narodzenia 2010 roku dostałem swój pierwszy telefon z Androidem. LG P500, to telefon budżetowy, bardzo tani, ale wiedziałem, że działa na Linuksie, a moją ulubioną dyscypliną na uniwersytecie była architektura komputerów czy coś, systemy operacyjne. Uczyliśmy się trochę powłoki i rozmawialiśmy trochę o jądrze Linuksa i nie tylko była częścią jądra i całej łączności w jądrze, a także faktycznego systemu operacyjnego i tak dalej był fascynujący Dla mnie. A potem wraz z przyjacielem zacząłem odbudowywać jądro Linuksa dla mojego starego laptopa. Robiąc to, rozbiliśmy nasze laptopy jakieś 100 razy, ale nauczyliśmy się przez cały ten proces. A potem zacząłem bawić się moim LG i pierwszą rzeczą, jaką zrobiłem, było zwiększenie wydajności, ponieważ to urządzenie było naprawdę kiepskie. Więc najlepszą rzeczą, jaką mogłem zrobić, było po prostu sprawdzenie standardowych parametrów jądra Linuksa dla rzeczywistych zarządzanie pamięcią i takie tam, i po prostu spróbuj znaleźć coś trochę lepszego niż to, co już było Tam. Trochę się wtedy pobawiłem.

Myślę, że nie mówiłem tego wcześniej w poprzednich wywiadach, ale wtedy to urządzenie korzystało ze starego systemu plików o nazwie YAFFS – co oznacza Yet Another Flash System plików, ale był dość powolny, gdy próbowaliśmy zamontować go jak dysk wymiany oparty na pamięci RAM, więc nie pamiętam szczegółów, ale zrobiliśmy różne rzeczy eksperymentowaliśmy z tym i ostatecznie zamontowaliśmy Dalvika na pamięci RAM, którą trzeba było odbudowywać przy każdym ponownym uruchomieniu, ponieważ, jak wiadomo, pamięć RAM znika co czas na ponowne uruchomienie. Ale dzięki temu otwieranie aplikacji i uruchamianie testów porównawczych było znacznie szybsze, więc byliśmy szczęśliwi. Potem zacząłem zgłębiać temat i próbować skompilować źródła jądra LG dla tego urządzenia, ale popełniłem mnóstwo złych błędów osądy i wszelkiego rodzaju błędy – sieć Wi-Fi, cokolwiek – wszystko, co możesz sobie wyobrazić od kogoś, kto nie ma doświadczenie. To była świetna zabawa, wiele się nauczyłem. Myślę, że po roku lub sześciu miesiącach robienia tego byłem trochę bardziej skupiony i trochę lepiej wiedziałem, co muszę pobrać. Tego właśnie wszyscy pragniemy na koniec dnia. Potem udało mi się zdobyć trochę darowizn i przejść na inne urządzenia. Chyba Nexus S, potem Galaxy Nexus i po tym okresie udało mi się wydać moją pierwszą aplikację. Myślę, że miałem dużo szczęścia i udało mi się sfinansować zakup nowych urządzeń i od tego momentu wszystko wystrzeliło w powietrze. Więc myślę, że ostatecznie wszystko zawdzięczam, nie powiedziałbym XDA, ale Platforma które zapewnia nam XDA.

I społeczność, która za tym stoi i tak dalej.

Tak, mam na myśli platformę, czyli społeczność i właściwe fora. Dla każdego, kto słucha, nie jest to płatny sponsor ani nic, nie płacą mi za to, że to mówię, to po prostu prawda!

Nie ma wideo, ludzie nie widzą, jak pistolet jest wycelowany w twoją głowę, jest w porządku.

Hahaha, tak, ale ktoś powie, że płacą mi za mówienie tego, więc po prostu to powiem! Ale tak, tak, to była dla mnie wspaniała platforma do tworzenia fajnych rzeczy, wiele się nauczyłem. Nauczyłem się tam wszystkiego, głównie robiąc błędy, a podczas nauki nadal rozwiązuję sporo problemów. Zniszczyłem moją Xiaomi Redmi Note 3, uh, bootloader jest właśnie zniszczony. Muszę więc podłączyć go ponownie do komputera z systemem Windows, który tam stoi, i muszę wszystko ponownie sflashować, a stoi tu już jakieś trzy miesiące. Dostaję od wszystkich hejty, ​​że nie zwracam uwagi na to urządzenie, więc nadal popełniam [błędy], więc tak nawet po tych wszystkich latach wciąż jest wiele do nauczenia się i jestem bardzo szczęśliwy, że mogłem przejść przez tę podróż i była to Wspaniały.

Cóż, myślę, że biorąc pod uwagę, że zacząłeś od... Czy to był LG P500?

Tak tak.

Ile lat temu to było? Bo to musiało dotyczyć oryginalnych wersji Androida, prawda? W okolicach Froyo czy coś?

Tak, to było dostarczane z Froyo i kilka miesięcy później zostało zaktualizowane do wersji Gingerbread. Myślę, że to urządzenie było z 2010 roku, początku 2011 roku, prawdopodobnie wcześniej. Wiem, że moje konto na XDA zostało utworzone w grudniu 2010 roku, ale urządzenie miałem już wcześniej. Więc myślę, że prawdopodobnie mniej więcej w tym czasie, tak.

Jak od tego czasu Android ewoluował pod względem wydajności? Na przykład, jak zmieniło się dla ciebie pisanie jąder wtedy i pisanie ich teraz? I przypuszczam, jakie są Wasze opinie na temat zmian.

Jeśli chodzi o jądro, myślę, że ewoluowaliśmy wraz z rzeczywistym jądrem Linuksa i wszystkimi zmianami, których faktycznie chciał zespół Androida zaimplementować dla określonej wersji Androida, więc dyktują większość specjalnych funkcji jądra, w zależności od tego, czego chcą wysłać. Ale myślę, że rzeczywista wydajność, więcej rdzeni naprawdę bardzo pomaga, ponieważ wtedy nie było na to żadnego realnego sposobu przenieś ten wątek (sic!) lub wyobraź sobie żądania sieciowe za pośrednictwem wątku w tle lub przynajmniej w czasie rzeczywistym gwintowanie. Myślę, że to była największa zmiana na przestrzeni lat – więcej sposobów na rozłożenie pracy i uniknięcie spowalniania Androida, ponieważ wszyscy próbują przejąć tę niewielką część udziału procesora. Przede wszystkim myślę o wielordzeniowości i prawdziwej wielowątkowości wspieranej przez Linuksa. Pomyślałem, że to [była] największa zmiana.

No dobrze, więc jaka jest twoja opinia na temat HMP vs EAS? Ponieważ oczywiście EAS jest nowy i używany tylko na kilku urządzeniach – tak jak używasz Google Pixel, prawda?

Tak, obecnie używam Galaxy S8, ale mam też Pixela. Nie znam obydwu rozwiązań tak szczegółowo. Są to po prostu różne implementacje tego, jak powinno działać urządzenie z wieloma klastrami w zależności od tego, co dzieje się na urządzeniu w określonych momentach. Uruchamianie dwóch różnych klastrów z dwoma różnymi poborami mocy jest dość trudne. Musisz sprostać oczekiwaniom zadań poruszających się w górę i w dół, a wiąże się to z opóźnieniem, a HMP był pierwszą prawdziwą implementacją prawdziwą architekturę wieloklastrową dla ARM, ponieważ jeśli dobrze pamiętam, zanim HMP był używany w świecie rzeczywistym, Samsung miał wstępną implementacja, w której albo używałeś pierwszych czterech rdzeni, takich jak rdzenie o małej mocy, albo czterech rdzeni o wysokiej wydajności, ale nigdy nie działały z szybkością o tym samym czasie. Ale potem, dzięki HMP, rdzenie były gotowe do użycia w dowolnym momencie, a zadania po prostu przenoszono z jednego klastra do drugiego i odwrotnie, i to zadziałało wyłączony, ale nie miałeś zbyt wielu informacji od planisty, aby pokazać to gubernatorowi, aby faktycznie zdecydował, jaki rodzaj częstotliwości będzie w tym przypadku używany w określonym czasie, więc musiałeś sobie poradzić, na przykład, próbując zrozumieć, co wydarzy się w ciągu [około] 20 sekund, a następnie na podstawie tego, co się tam wydarzyło, decydujesz, co Do. EAS polega bardziej na zrozumieniu tego, co wydarzy się w przyszłości i podejmowaniu decyzji w czasie rzeczywistym moc wyjściową każdego rdzenia, a następnie jest to szereg obliczeń i skomplikowanych rzeczy w tło

Podobnie jak modele energetyczne i tak dalej, aby to wszystko poprzeć.

Tak, chyba tak, to dość skomplikowane, nie znam wszystkich szczegółów. Czytałem mnóstwo dokumentów, ale jest to dość skomplikowane i nie chodzi tylko o włączenie przełącznika i przygotowanie go do użycia. Często dostaję to pytanie, czy można wdrożyć EAS na telefonie XYZ. Moje odpowiedzi są zawsze „To nie jest kwestia przekręcenia gałki, to nie tak, wdrożenie wymagało całego zespołu Googlersów i chłopaków z Linaro to i trzeba przenosić różne rzeczy, robić różne rzeczy, testować, a to po prostu za dużo pracy i trochę roboty ślepy" i… tak. To trudne.

Musisz więc dokładnie wiedzieć, co robisz. Nie jest to praca jednoosobowa?

Tak, musisz wiedzieć, co robisz, każdy może wybrać łatki i połączyć je, ale faktyczne przetestowanie i upewnienie się, że działa poprawnie, a będziesz potrzebować odpowiedniej maszyny do wykrywania zużycia energii przez każdy komponent, a w jądrze znajduje się kilka tabel, w których można zapisać moc każdego rdzenia i na tej podstawie kod zadecyduje, co Do. To dość skomplikowane. Nie sądzę, że jest to ostateczne rozwiązanie wszystkich problemów, ale zdecydowanie najlepsze, jakie mamy obecnie.

Więc postrzegasz to jako poprawę?

Jasne, mile, mile, mile stąd. Jest to zdecydowana poprawa w porównaniu z HMP lub jakąkolwiek inną architekturą, ponieważ jeśli zrozumiesz, co wydarzy się w przyszłości, możesz zareagować znacznie szybciej na każde żądanie lub cokolwiek dzieje się na urządzeniu, dlatego Google Pixel jest tak szybki i tak płynny, ponieważ wszystko dzieje się niemal natychmiast czas rzeczywisty. Przesuwanie częstotliwości w górę i w dół jest najłatwiejszym sposobem na osiągnięcie oczekiwanych wyników.

Myślę więc, że jeśli w przyszłości EAS będzie częściej stosowany, jak według ciebie wpłynie to na twój własny rozwój w zakresie jąder? Czy nadal pozostałbyś przy HMP, czy raczej przy już wprowadzonych modelach energetycznych? Na przykład w OnePlus 3 [programiści ROM] ponownie wykorzystują model energii z Google Pixel dla EAS. Czy widziałbyś siebie robiącego coś takiego?

Prawdopodobnie tego nie zrobię, jeśli urządzenie nie będzie dostarczane z EAS, to prawdopodobnie nie wdrożę tego w żaden sposób ani w formie, ponieważ jak powiedziałem, jest to dość długi proces i nikt w XDA nie wie lepiej niż wszyscy ci inżynierowie, więc chyba po prostu próbujemy pobawić się w Boga.

A skoro już mowa o przyszłości Androida i jądra, jaka jest Twoja opinia na temat najnowszej wersji Androida Oreo? Czy uważacie, że zmiany są dobre? Czy zapoznałeś się z którymkolwiek z nowych zatwierdzeń jądra?

W Nexusie 6P i Nexusie 5X nie było zbyt wielu zmian po stronie jądra, jedynie drobne poprawki tu i ówdzie. W Google Pixel iterowali implementację EAS i spędzili trochę czasu na ulepszaniu sekcji segregatora, ponieważ teraz segregator wraz z Project Treble, to jak dzielenie różnych pakietów, więc muszą przejść przez 50 lub 100 różnych poprawek, aby ulepszyć segregator i podzielić go na różne procesy. Poza tym była to po prostu normalna praca nad dużym wydawnictwem. Kiedy pojawia się nowa wersja platformy, zwykle nie ma się zbyt wiele do czynienia z jądrem, ponieważ majstrowanie przy jądrze jądro, tak naprawdę potrzebujesz dużo kontroli jakości, jeśli czasami zmieniasz jedną rzecz, słyszysz, że wpływa to na coś w innej podsystem. To jest to, co zwykle robią, dlatego nie ma zmian w wersji jądra pomiędzy aktualizacjami platformy. To po prostu dużo pracy. Zwykle nie jest to tego warte, ale tak, były to głównie segregatory, trochę harmonogramu i zwykłe poprawki bezpieczeństwa. Przejrzałem je wszystkie, ale nic szczególnie nie przykuło mojej uwagi. Moją uwagę przykuł jedynie segregator.

Ach, OK, więc naprawdę standardowe rzeczy.

Tak, są dość skomplikowane i nie pytaj mnie o szczegóły!

To zupełnie inny temat. Jaka jest Twoja opinia na temat F2FS w porównaniu z ext4? Ponieważ wiele osób powie, że F2FS jest niestabilny i powoduje problemy,Zastanawiam się tylko, jakie jest Twoje zdanie na ten temat.

Nie znam też szczegółów, ponieważ systemy plików są dość trudne, tu i ówdzie jest wiele ruchomych części. Zacytuję tylko inżyniera Google, który mówi, że na podstawie ich testów F2FS nie działa szybciej niż ext4, a na dodatek, gdy testowali rzeczy dla Google Pixel, F2FS nie zapewniał obsługi… Myślę, że było to szyfrowanie bloków plików, podczas gdy ext4 obsługuje To. To samo oznacza – po prostu to wyrzucić. Trzeba pomyśleć o dwóch rzeczach, nad ext4 pracuje się od jakichś 20 lat z wieloma bardzo inteligentnymi inżynierami z różnych firm i oni wiedzą, co robią. F2FS został, jeśli dobrze pamiętam, zaimplementowany przez Samsunga. To całkiem nowy system plików, więc tak skomplikowane rzeczy wymagają czasu na ulepszenie i iterację, jak ty widać z systemu plików Apple, który właśnie został wydany na iOS, i zamierzają zrobić to samo dla komputerów Mac system operacyjny. Sprawy wymagają czasu, do prawidłowego wykonania tych czynności potrzebny jest ogromny zespół. Jestem wielkim zwolennikiem zasady „jeśli coś działa, nie dotykaj tego” i tego, co mamy obecnie – działa i nie sądzę, że powoduje to jakiekolwiek problemy z wydajnością, więc nie widzę powodu, aby zadzieraj z tym.

Ach, OK, to wystarczy! Co powiesz na Karta SDFS przełączany z FUSE? Jakie byłoby Twoje zdanie na ten temat?

Stało się tak, ponieważ starszy system plików FUSE był jedną z najgorszych rzeczy, które wydarzyły się na Androidzie. Wydajność była okropna, było wiele wywołań systemowych między jądrem a przestrzenią użytkownika, a teraz dzięki SDCardFS zostało to zrobione poprawnie. Jest to normalny system plików, który sobie z tym radzi, znowu nie znam szczegółów, ponieważ jest to bardzo skomplikowana sprawa, ale to, co wiem czytane, widziane i słyszane z różnych podcastów zespołu Androida, w zasadzie rozwiązało to wszystkie problemy ze starym system. To było okropne, występ był okropny.


Obejrzyj część 2, klikając ten przycisk!