Cómo Google utiliza Linux 2009 Noviembre 8 by alexsandovalm En LWN.net <http://lwn.net/> cubrieron la *2009 Linux Kernel Summit*, y presentaron un resumen de la presentación realizada por los ingenieros de Google sobre la forma en que utilizan Linux. Según el artículo, un equipo de 30 ingenieros de Google se remonta al núcleo principal cada 17 meses, poniendo en ejecución 1208 parches para el núcleo 2.6.26 y la inserción de casi 300.000 líneas de código; aproximadamente el 25% de los parches son backports de nuevas características. No existe ninguna otra organización que utilice más extendidamente sistemas Linux que Google. Sin embargo, la comunidad de desarrollo del kernel sabe poco acerca de cómo Google utiliza Linux y qué tipo de problemas se encuentran allí. Mike Waychison de Google viajó a Tokio para ayudar a dar algo de luz sobre esta situación y el resultado fue una interesante perspectiva sobre lo que se necesita para ejecutar Linux en este entorno sumamente exigente. Mike empezó la charla contando a los desarrolladores un chiste: parece que Google gestiona su código del kernel con Perforce (un sistema comercial de control de versiones para gestionar proyectos experimentales que todavía no están listos). Se disculpó por ello. Existe un solo árbol que compromete a todos los desarrolladores. Aproximadamente cada 17 meses, Google monta su trabajo a una publicación de línea de desarrollo principal, lo que sigue es una larga lucha para que todo funcione de nuevo. Una vez hecho esto, las “característica” internas se liberan cada seis meses. Esta manera de hacer las cosas dista mucho de ser ideal, significa que Google está muy por detrás de la línea de desarrollo principal y tiene dificultades para hablar con la comunidad de desarrollo del kernel sobre sus problemas. Hay alrededor de 30 ingenieros que trabajan en el kernel de Google. En la actualidad tienden a revisar sus cambios en el árbol, y luego se olvidan de ellos por los próximos 18 meses. Esto lleva a algunos problemas de mantenimiento; los desarrolladores a menudo tienen una pequeña idea de lo que realmente está en el árbol de Google hasta que se rompe. Y hay mucho en ese árbol. Google comenzó con el kernel 2.4.18 – en el que parcharon más de 2000 archivos, insertando 492.000 líneas de código. Entre otras cosas, ellos portaron el soporte de 64 bits dentro del núcleo. Más tarde se movieron al núcleo 2.6.11, principalmente porque necesitaban el soporte SATA. Cotinuaron con un kernel basado en la versión 2.6.18, y ahora están trabajando en la preparación de un kernel 2.6.26 para un desarrollo futuro. Están actualmente llevando 1208 parches al núcleo 2.6.26, insertando cerca de 300.000 líneas de código. Aproximadamente el 25% de los parches, según estimaciones de Mike, se tratan de *backports* de nuevas características. Hay planes para cambiar todo esto, el grupo del núcleo de Google está tratando de llegar a un punto en el que puedan trabajar mejor con la comunidad del núcleo. Se están moviendo a git para la gestión del código fuente, y los desarrolladores podrán mantener sus cambios en sus propios árboles. Esos árboles se montarán al desarrollo del núcleo principal cada trimestre, lo que debería motivar a los desarrolladores hacer su código más fácil de mantener y más en consonancia con el flujo de desarrollo del núcleo. Linus le preguntó: ¿por qué no son estos parches presentados? ¿Es porque Google se siente avergonzado por ellos, o se trata de material secreto que no quiere revelar, o es una cuestión de problemas en el proceso interno? La respuesta fue simplemente “sí”. Algunos de estos códigos son algo “feos” que se han llevado adelante desde el núcleo 2.4.18. También hay dudas internas acerca de cómo gran parte de este material será realmente útil para el resto del mundo. Pero, tal vez, cerca de la mitad de este código podría ser de incluido en el desarrollo eventualmente. Más de 3/4 del código de Google consiste en cambios al núcleo central, el soporte a dispositivo es relativamente una pequeña parte del total. Google tiene una serie de “puntos de dolor” (“pain points”) que hacen que trabajar con la comunidad sea más difícil. Mantenerse al día con el flujo de desarrollo del núcleo es difícil -simplemente se mueve demasiado rápido. También hay un problema real con los desarrolladores publicando un parche, a continuación, se pide volver a trabajar de una manera que lo convierte en un proyecto mucho más grande. Alan Cox tenía una respuesta simple para que ellos: la gente siempre pide más, pero a veces lo que hay que hacer es simplemente decirles “no”. Puedes ver el artículo completo en LWN. *Enlaces:* - The 2009 Linux Kernel Summit<http://lwn.net/Articles/KernelSummit2009/> - How Google uses Linux <http://lwn.net/Articles/357658/> - How Google uses Linux<http://translate.google.cl/translate?prev=hp&hl=es&js=y&u=http%3A%2F%2Flwn.net%2FArticles%2F357658%2F&sl=en&tl=es&history_state0=>(traducción automática con Google) * Extraído de:* http://microteknologias.wordpress.com/2009/11/08/como-google-utiliza-linux/ La versión de Linux que usa Google Publicado hace 1 hora por * Franco Catrin<http://www.fayerwayer.com/author/Franco/> * Google es probablemente la organización en donde está corriendo la mayor cantidad de sistemas Linux. Gracias a este sistema operativo fue posible crear un esquema de trabajo distribuido y a la medida que fuera suficientemente independiente para permitir convertir una tesis<http://infolab.stanford.edu/%7Ebackrub/google.html>en lo que hoy es Google. Pero hasta hace poco, no se sabía mucho de qué uso y qué tipo de problemas encontraba Google en su intensivo uso de Linux. Digo hasta hace poco porque en el reciente Kernel Summit<http://www.fayerwayer.com/2009/10/se-viene-el-linux-kernel-summit-2009/>realizado en Japón, Mike Waychison de Google asistió para exponer a los principales hackers del kernel, el uso que este gigante informático le da a Linux. Google usa un sistema de control de versiones del software bastante arcaico para lo que está acostumbrada la comunidad del código abierto, lo que provocó risas en los asistentes. Se trata de Perforce, y en comparación a nuevos sistemas como Git, tiene limitaciones o modos de trabajo que uno jamás pensaría que tendrían en Google. No es de extrañar el interés despertado en los asistentes a la presentación que hizo Linus Torvalds sobre Git en Google <http://www.youtube.com/watch?v=4XpnKHJAok8> hace un tiempo atrás. Y eso es sólo el comienzo, ya que Google maneja versiones bastante atrasadas de Linux. Alrededor de 30 ingenieros trabajan sobre una única base de código, aplican cambios y aproximadamente cada 18 meses sincronizan su propia versión con una versión pública de Linux. Al ritmo que se desarrolla el kernel, la cantidad de cambios acumulados en todo ese tiempo lo convierten en una tarea titánica. Es tanto así, que muchas de las lineas de código que Google agrega a su propia versión son funcionalidades que se han implementado en Linux pero que no existían en la versión que usaron como base. Así sucedió por ejemplo con el soporte de 64-bit y el soporte de SATA. Actualmente se están preparando para mezclar con 2.6.26, mientras que la versión pública ya se acerca a 2.6.32. Los cambios de Google serán aproximadamente 300.000 líneas de código en donde un 25% corresponde a backports de nuevas características. El código es horrible Linus Torvalds quien obviamente estaba presente y no fue sólo a sacarse fotos a Japón<http://www.fayerwayer.com/2009/10/el-dia-de-windows-7-en-7-fotos/>, preguntó por qué Google no aplicaba sus cambios al kernel público. Mike respondió que el código era bastante horrible y basado en versiones antiguas de Linux, además de que no tenían seguridad de que los cambios aplicados por ellos tuvieran alguna utilidad para otros y que probablemente sólo la mitad de éste sería publicable. Hay que recordar que licencias como GPL no obligan a publicar el código que se usa internamente, por lo que Google está en su derecho de no publicar sus cambios. Otro aspecto importante es que los estándares para aceptar código en el kernel son bastante altos<http://www.fayerwayer.com/2009/09/drivers-de-microsoft-para-linux-estuvieron-a-punto-de-ser-eliminados/>, por lo tanto un cambio que Google puede hacer rápidamente se convertiría en un proyecto de largo o mediano plazo al entrar en un proceso más exigente como es el desarrollo de Linux. Mike también habló de uno de los aspectos críticos del kernel para Google, que es la forma en que se ejecutan los procesos. En un sistema multihilos como Linux, existe un componente que se encarga de decidir qué proceso usará la CPU en un momento determinado, este componente se llama scheduler o planificador. Para Google se trata de un componente en donde los cambios tienen un alto impacto, ya que en sus sistemas corren unos 5000 hilos en 16 a 32 cores, mientras que en el equipo de Linux este aspecto se ataca con criterios de diseño que apuntan a un uso más tradicional. En general Google aplica varios cambios a medida que los necesita, en forma independiente a cómo se implementan en el kernel, hasta que llega el momento de cambiar de versión. Según los asistentes, esta participación en Linux Summit fue bastante productiva ya que se puede decir que la comunidad aprendió mucho de uno de sus principales y extremos usuarios. *Link:* How Google uses Linux <http://lwn.net/Articles/357658/> *(LWN.net)* ** *Extraído de:* *http://www.fayerwayer.com/2009/11/la-version-de-linux-que-usa-google/ * -- José Ignacio Pedrini. Free Culture Activisit. Free Software Acrivist. Partido Pirata Activist.