Parte 1 de una entrevista con Francisco Franco, el desarrollador de Franco Kernel y otras aplicaciones para muchos dispositivos diferentes.
Recientemente tuve el placer de entrevistar al hombre detrás de uno de los kernels de Android más populares de todos los tiempos, el Franco Kernel. Actualmente, el kernel está disponible en muchos dispositivos diferentes, incluidos varios dispositivos Nexus y OnePlus y Google Pixel/Pixel XL.
En esta parte hablamos del viaje de Francisco Franco hacia el desarrollo del kernel y su opinión sobre los cambios que ha sufrido Android a lo largo de los años.
¡Soy Adam Conway aquí en XDA para entrevistar a Francisco Franco, desarrollador de Franco Kernel! ¿Quieres presentarte?
Claro, mi nombre es Francisco, como acabas de decir, ¡y creo que ya llevo 1 millón de años en XDA! He estado haciendo todo tipo de cosas. granos, aplicaciones, y últimamente he estado aflojando un poco más con los kernels porque se vuelve aburrido después de un tiempo, pero todavía tengo toda mi fuerza en la mayoría de mis dispositivos.
Bien, supongo que mucha gente estaría familiarizada con tu trabajo, pero mucha gente no estaría familiarizada con la persona real detrás del trabajo. Entonces, ¿realmente supongo que tienes algún tipo de experiencia pasada antes de los kernels? ¿Como cualquier título en informática o algo así de antemano?
Siempre me han apasionado las computadoras, como cualquier niño mientras crecía, supongo. Después de cumplir 18 años decidí ir a la universidad como todos los demás, y creo que estaba tomando informática o algo así, pero después de aproximadamente un año, me di cuenta de que eso no era lo que realmente me apasionaba. acerca de. Después de ese año mis expectativas empezaron a decaer porque todo eran palabras y nada de acción, y estaba Empecé a aburrirme, no porque fuera mejor que nadie, sino porque era normal y corriente, sino porque las disciplinas reales no fueron exactamente Lo que quería. Entonces hablé con mis padres y ellos sabían que eso no me hacía muy feliz. Durante la Navidad de 2010, obtuve mi primer teléfono con Android. Un LG P500, es un teléfono económico, muy barato, pero sabía que ejecutaba Linux y mi disciplina favorita en la universidad era la arquitectura de computadoras o algo así, los sistemas operativos. Y estábamos aprendiendo un poco sobre el shell y hablando un poco sobre el kernel de Linux y lo que era parte del kernel y toda la conectividad en el kernel, y el sistema operativo real, y eso era fascinante para mí. Y luego comencé a reconstruir el kernel de Linux para mi vieja computadora portátil junto con un amigo. Chocamos nuestras computadoras portátiles como 100 veces al hacer eso, pero aprendimos a través del proceso. Y luego comencé a jugar con mi LG, y supongo que lo primero que hice fue intentar mejorar un poco más el rendimiento porque ese dispositivo era bastante malo. Así que lo mejor que pude hacer fue revisar los parámetros estándar del kernel de Linux para la configuración real. gestión de memoria y esas cosas, y sólo tratar de encontrar algo un poco mejor de lo que ya era allá. Me divertí un poco entonces.
Creo que no he dicho esto antes en entrevistas anteriores, pero en aquel entonces ese dispositivo usaba un antiguo sistema de archivos llamado YAFFS, que significa Otro Flash más. Sistema de archivos, pero fue bastante lento cuando intentamos montarlo como un disco de intercambio respaldado por RAM, así que no recuerdo los detalles, pero hicimos todo tipo de cosas diferentes. Experimentamos con eso y terminamos montando el Dalvik encima de la memoria RAM que tenía que reconstruirse cada reinicio porque, como saben, la RAM desaparece cada vez. momento en que reiniciamos. Pero hizo que abrir aplicaciones y ejecutar pruebas comparativas fuera bastante más rápido, por lo que estábamos contentos. Entonces, después de eso, comencé a profundizar un poco más e intenté compilar las fuentes del kernel de LG para el dispositivo, e hice todo tipo de errores. juicios y todo tipo de errores - red Wi-Fi, lo que sea - todo lo que puedas imaginar de alguien sin experiencia. Fue divertido, aprendí mucho. Supongo que después de un año o seis meses [de] hacer eso, estaba un poco más concentrado y sabía un poco mejor lo que tenía que conseguir para las descargas. Eso es lo que todos queremos al final del día. Después de eso, logré obtener algunas donaciones y pasar a otros dispositivos. Supongo que el Nexus S, luego el Galaxy Nexus y luego de ese período, logré sacar mi primera aplicación. Supongo que he sido muy afortunado y he podido financiarme comprando nuevos dispositivos, y a partir de ahí todo explotó. Así que supongo que al final del día se lo debo todo a, no diría XDA, pero la plataforma que nos proporciona XDA.
Y la comunidad detrás de esto y todo eso.
Sí, sí, me refiero a la plataforma, es decir, la comunidad y los foros reales. Para cualquiera que escuche, este no es un patrocinador pagado ni nada por el estilo, no me pagan por decir esto, ¡es simplemente verdad!
No hay video, la gente no ve el arma apuntándote a la cabeza, está bien.
Jajaja, sí, pero alguien dirá que me pagan por decir esto, ¡así que simplemente lo diré! Pero sí, sí, ha sido una plataforma maravillosa para mí para construir cosas interesantes, aprender mucho, he aprendido todo allí cometiendo principalmente errores y al aprender todavía resuelvo una buena cantidad de problemas. Destruí mi Xiaomi Redmi Note 3, eh, el gestor de arranque simplemente está destruido. Así que tengo que conectarlo nuevamente con mi computadora con Windows que está ahí atrás y tengo que actualizar todo y ha estado aquí durante como tres meses. Estoy recibiendo todo tipo de odio por parte de todos porque no le presto atención a ese dispositivo, así que sigo cometiendo [errores], supongo, así que Incluso después de todos estos años, todavía hay cosas que aprender y he sido muy afortunado de haber pasado por este viaje y ha sido impresionante.
Bueno, supongo que viendo que empezaste con... ¿LG P500 era?
Sí, sí.
¿Hace cuántos años fue eso? Porque eso debe haber ocurrido en las versiones originales de Android, ¿verdad? ¿Alrededor de Froyo o algo así?
Sí, se envió con Froyo y se actualizó a Gingerbread un par de meses después. Creo que ese dispositivo era de 2010, principios de 2011, probablemente antes. Sé que mi cuenta en XDA se creó en diciembre de 2010 pero ya tenía el dispositivo de antemano. Así que supongo que probablemente en esa época, sí.
¿Cómo ha evolucionado Android en términos de rendimiento desde entonces? ¿Cómo ha cambiado para ti escribir kernels en aquel entonces y escribirlos ahora? Y supongo cuáles son sus opiniones sobre los cambios.
En cuanto al kernel, creo que hemos evolucionado con el kernel de Linux actual y todos los cambios que el equipo de Android realmente quería hacer. implementar para una determinada versión de Android, por lo que dictan la mayoría de las características especiales que tendrá el kernel, según lo que quieran exportar. Pero supongo que el rendimiento real y más núcleos ayudan mucho porque en aquel entonces no había ninguna forma real de mueva este hilo (sic), o imagine solicitudes de red a través de un hilo en segundo plano, o al menos en tiempo real enhebrado. Creo que ese fue el cambio más grande a lo largo de los años, tener más formas de distribuir el trabajo y no hacer que Android se ralentice porque todos están tratando de apoderarse de esa pequeña parte de la CPU. Más que nada, creo que es multinúcleo y multiproceso real respaldado por Linux. Pensé que [era] el cambio más grande.
Ah, está bien, entonces, ¿cuál es tu opinión sobre HMP frente a EAS? Porque, obviamente, EAS solo es nuevo y solo se usa en unos pocos dispositivos, como si usaras un Google Pixel, ¿verdad?
Sí, actualmente estoy usando un Galaxy S8, pero también tengo un Pixel. No conozco ambos con tanto detalle, son solo implementaciones diferentes de cómo debería actuar un dispositivo de múltiples clústeres en función de lo que sucede en el dispositivo en ciertos momentos. Ejecutar dos clústeres diferentes con dos consumos de energía diferentes es bastante difícil. Tienes que cumplir con las expectativas de las tareas que se mueven hacia arriba y hacia abajo, y hay una latencia involucrada allí y HMP fue la primera implementación real de un arquitectura real de múltiples clústeres para ARM, porque si no recuerdo mal, antes de que HMP se usara en el mundo real, Samsung tenía una implementación en la que se usaban los primeros cuatro núcleos, como núcleos de bajo consumo, o cuatro núcleos de alto rendimiento pero nunca se ejecutaban a al mismo tiempo. Pero luego, con el HMP, los núcleos estaban listos para usarse en cualquier momento y las tareas simplemente se movían de un grupo a otro y viceversa, y eso funcionó. pero no tenías tanta información del programador para mostrárselo al gobernador y así decidir qué tipo de frecuencia se usaría en ese momento. tiempo específico, por lo que tenías que lidiar con tratar de entender qué sucede en [aproximadamente] 20 segundos y luego, en función de lo que sucedió allí, decides qué hacer. EAS, se trata más de entender lo que va a pasar en el futuro y decidir en tiempo real basándose en las salidas de energía de cada núcleo, y luego hay un montón de cálculos y cosas complicadas en el fondo
Como modelos energéticos y demás para respaldarlo todo.
Sí, supongo que sí, es bastante complicado, no conozco todos los detalles. He leído muchos documentos, pero es bastante complicado y no se trata simplemente de encender un interruptor y tenerlo listo para usar. Recibo muchas veces esa pregunta: ¿puedes implementar EAS en un teléfono XYZ? Mis respuestas son siempre "No se trata de girar una perilla, no es así, se necesitó todo un equipo de empleados de Google y chicos de Linaro para implementar eso y tienes que mover cosas, hacer cosas, probar cosas y eso es demasiado trabajo y algo así ciego" y si. Es dificil.
Entonces, ¿tienes que saber exactamente lo que estás haciendo, no es un trabajo de un solo hombre?
Sí, tienes que saber lo que estás haciendo, cualquiera puede elegir los parches y fusionarlos, pero realizando pruebas y asegurándote de que funciona correctamente, necesitarás una máquina adecuada. para detectar el uso de energía de cada componente y hay un montón de tablas en el kernel donde puedes escribir la potencia de cada núcleo, y en base a eso el código decidirá qué hacer. Es bastante complicado. No creo que sea una solución definitiva para todos los problemas, pero definitivamente es la mejor que tenemos ahora.
¿Entonces lo ves como una mejora?
Sí, claro, a millas, millas, millas de distancia. Es una mejora definitiva con respecto a HMP o cualquier otra arquitectura, porque si puedes entender lo que sucederá en el futuro, podrás reaccionar mucho más rápido. a cualquier solicitud o cualquier cosa que esté sucediendo en el dispositivo, es por eso que Google Pixel es tan rápido y fluido, porque todo sucede casi en tiempo real. Mover las frecuencias hacia arriba y hacia abajo es la forma más fácil de alcanzar las expectativas de rendimiento.
Entonces, supongo que si hay una mayor adopción de EAS en el futuro, ¿cómo cree que esto afectará su propio desarrollo en lo que respecta a los núcleos? ¿Seguirías con HMP o optarías por modelos energéticos ya lanzados? Por ejemplo, en OnePlus 3, [los desarrolladores de ROM] están reutilizando el modelo energético de Google Pixel para EAS. ¿Te imaginas haciendo algo así?
Probablemente no haré eso, si el dispositivo no viene con EAS para empezar, entonces probablemente no lo implementaré de ninguna manera porque Como dije, es un proceso bastante largo y nadie en XDA lo sabe mejor que todos estos ingenieros, así que supongo que solo estamos tratando de jugar a ser Dios.
En ese sentido, hablando del futuro con Android y los kernels, ¿cuál es su opinión sobre el reciente lanzamiento de Android Oreo? ¿Crees que los cambios son buenos? ¿Has mirado alguna de las nuevas confirmaciones del kernel?
No hubo tantos cambios en el lado del kernel en Nexus 6P y Nexus 5X, solo pequeñas correcciones aquí y allá. En Google Pixel, estaban iterando en la implementación de EAS y dedicaron algún tiempo a mejorar la sección de carpeta, porque ahora la carpeta, junto con Project Treble, es como dividir diferentes paquetes, por lo que tienen que pasar por 50 o 100 parches diferentes para mejorar la carpeta y separarla en diferentes procesos. Aparte de eso, fue simplemente un trabajo normal para un gran lanzamiento. Cuando hay una nueva versión de plataforma, por lo general no se juega mucho con el kernel, porque jugar con el kernel, en realidad necesitas mucha control de calidad, si a veces cambias una cosa, escuchas que afecta algo en otra subsistema. Eso es lo que suelen hacer, es por eso que no hay un aumento de la versión del kernel entre las actualizaciones de la plataforma. Es simplemente mucho trabajo. Por lo general, no vale la pena, pero sí, se trataba principalmente de carpetas, un poco del programador y las correcciones de seguridad habituales. Los revisé todos, pero nada me llamó realmente la atención. Mi atención sólo se centró en la carpeta.
Ah, está bien, en realidad solo lo estándar.
Sí, son bastante complicados y ¡no me pidas detalles!
Este es un tema completamente diferente, ¿cuál es tu opinión sobre F2FS frente a ext4? Porque verás que mucha gente dirá que F2FS es inestable y causa problemas,Me pregunto cuál es tu opinión al respecto.
Tampoco sé los detalles porque los sistemas de archivos son bastante difíciles, hay muchas partes móviles aquí y allá. Simplemente citaré a un ingeniero de Google que dice que, según su prueba, F2FS no funciona más rápido que ext4, y además cuando estaban probando cosas para Google Pixel, F2FS no brindaba soporte para... Creo que era cifrado de bloques de archivos, mientras que ext4 lo admitía. él. Entonces eso solo significa: simplemente deséchalo. Tienes que pensar en dos cosas: se está trabajando en ext4 durante unos 20 años con muchos ingenieros muy inteligentes de diferentes empresas y saben lo que están haciendo. F2FS fue, si mal no recuerdo, implementado por Samsung. Es un sistema de archivos bastante nuevo, por lo que cosas tan complicadas como estas requieren tiempo para mejorarse e iterarse, ya que Se puede ver en el sistema de archivos de Apple que se acaba de lanzar en iOS, y van a hacer lo mismo para Mac. SO. Las cosas toman tiempo, se necesita un gran equipo para hacerlas correctamente. Soy un gran partidario de "si funciona, no lo toques" y lo que tenemos ahora mismo: está funcionando y no creo que cause ningún problema de rendimiento, así que no veo una razón para hacerlo. meterse con eso.
Ah, está bien, ¡eso es bastante justo! Qué pasa Tarjeta SDFS ¿Está siendo cambiado desde FUSE? ¿Cuál sería tu opinión al respecto?
Eso sucedió porque el antiguo sistema de archivos FUSE fue una de las peores cosas que le sucedieron a Android. El rendimiento fue horrible, hubo muchas llamadas al sistema entre el kernel y el espacio del usuario y ahora con SDCardFS se hace correctamente. Es un sistema de archivos normal para lidiar con esto; nuevamente, no conozco los detalles porque es algo muy complicado, pero lo que he leído, visto y escuchado en diferentes podcasts del equipo de Android, básicamente solucionó todos los problemas con el antiguo sistema. Eso fue bastante horrible, la actuación fue horrible.
¡Mira la Parte 2 haciendo clic en este botón!