Google Chrome

No suelo escribir sobre las novedades que la web nos ofrece a menos que sea algo interesante para el programador, pero viendo esto de google chrome no he podido evitarlo. Creo que todo el mundo se ha bajado el navegador en cuestión si no lo ha hecho lo invito.

La primera impresión buena, es un diseño sencillo. Empiezo a navegar y me llevo una sorpresa. Normalmente siempre tengo abierto el process explorer un sustituto del administrador de tareas de windows, y cuando he mirado al árbol de procesos me he llevado una sorpresa muy grande.

 

image

Resulta que el navegador de chrome abre un proceso por cada pestaña, parece que eso de aislar cada tab por si uno falla que falle solo esa pestaña lo han llevado al extremo.

Pero resulta que esto es una muy mala práctica. Como sabréis una de la cosa más costosa para Windows es iniciar un proceso, ya que debido a las características de seguridad y aislamiento Windows genera una memoria virtual para cada proceso además de todas las estructuras necesarias para que el proceso se pueda iniciar. Pues me parece que esta solución de los “ingenieros” de software de google, es la más obvia, cutre y sobre todo la más fácil. Ni que decir tiene que este modelo de navegador hace que se generen muchos procesos, que, por muy ligeros que sean, tienen que cargar sus dll, reservar memoria a Windows y demás tareas. Es como si en la programación de páginas web cambiásemos el modelo de hosting de asp.net a un modelo cgi en que cada vez que se hace una petición se inicia el w3_wp.exe. Eso por ejemplo lo vemos una barbaridad, pues la gente de google es lo que ha hecho.

No sé si sabéis que en .net existe el mismo problema para los entornos de hosting, un proceso, asp.net o Sql Server. Imaginaros por un momento que tengo mi web en asp.net en un hosting compartido, y una de las web que se aloja en ese servidor, que también está dentro del mismo proceso w3_wp.exe hace una operación no valida y genera una excepción crítica, resulta que el proceso se cerraría y se reiniciaría y yo que también estoy hay sufriría la incompetencia de mi vecino de memoria. Esto desde luego es una cosa muy fuerte, por eso en .NET existe el concepto de Dominio de Aplicación, System.AppDomain, que básicamente es un aislamiento lógico para las aplicaciones, incluso si están dentro del mismo dominio. Esto no es gratuito puesto que a poco que conozcas un poco la plataforma Windows, sabrás que Windows comparte las dll cargas en el mismo proceso, lo que hace que se mejore el consumo de memoria.

Que por cierto si dentro del mismo tab cambias la web el proceso que has usado para renderizar la anterior se cierra y se abre uno nuevo, toda una aberración, ni siquiera reutilizan el proceso, como yo decía un modelo cgi de renderizado de webs. También para los plugins utiliza el mismo proceso, podemos verlo con las líneas de comando.

 

image

Así que lo único que digo sobre el navegador de google, que me importa muy poco, por no decir nada que soporte acid test o lo que sea o los estándares, es que el modelo de aislamiento de tab me parece una castaña muy gorda y que en vez de agitar internet con un lanzamiento de estas características para presentar esta cosa, por favor cállate y presenta algo innovador de verdad.

Actualización: Parece que Microsoft en la beta del IE8 con el UAC activado hace lo mismo, y tengo que decir que me parece una castaña muy gorda, parchear el navegado y no inventar nada nuevo. Yo no tengo el UAC activado.

 

ie8beta22

Windows Vista con UAC gentileza de mi colega Pedro Laguna

 

ie8

Y este es mi escritorio sin UAC con IE8 Beta2 con varios tabs y el process explorer abierto.

13 comentarios en “Google Chrome”

  1. Luis, no deja de ser curioso que todo el mundo hable de la novedad de los procesos por pestaña… novedad que ha incorpora la beta 2 de IE…

    Sobre lo costoso de crear nuevos procesos, pues es cierto, pero no es lo mismo tener un proceso por pestaña que por petición a un CGI… yo no creo que sea tan dañino.

    La verdad es que me he tragado todo el comic de Google sobre la castaña esta de Chrome… y tampoco veo innovación alguna por ningún sitio, comparto tu opinión…

    Otra cosa es que la gente considere que ponder las pestañas arriba y el un logo tipo Google es innovar…

  2. Hola Luis,

    Siento decirte que Google no es el único que tiene este modelo de aislamiento de tabs. IE 8, lo incluye. Exactamente no se la diferencia, pero IE 8 a diferencia de Google si reutiliza, optimiza y agrupa tabs por proceso de tal forma que cada proceso mantiene x tabs, pero estando aislado del resto.

    En mi blog he hablado del tema, pero nunca desde el punto de vista de si es buena práctica o no, siempre del resultado al usuario.

    Un saludo 🙂

  3. la verdad esque este es el primer post de mis feeds que habla sin euforia, y se dedica a hacer un análisis un poco más de cabeza fría. Felicitaciones.
    Por otro lado, he experimentado con el browser este, y la verdad es bueno, supongo que debido al webkit que usan.
    En fin, entiendo los reparos que explicas sobre los procesos y el reuso de ellos, y bueno, que se le va a hacer, si termina funcionando mejor que ie7 y firefox (que es lo que ha pasado hasta ahora) entonces ie8 tiene una bara que alcanzar.
    Quizas no sea tan barbaro, si finalmente termina funcionando.

  4. Ahora que veo el comentario de Rodrigo, estamos de acuerdo, innovar han innovado poco.

    La novedad la podemos ver en la interfaz simple y fluída (aun que no innovación) y donde si podemos ver innovación es la máquina virtual de JavaScript, V8. Pero promete mucho y no se donde ver realmente como afecta esto.

    El modelo de aislamiento de pestañas, como dice Rodrigo no lo veo tan mal, pero como te dije en el comentario anterior, nunca lo analice pensando en las prácticas.

    La pestaña inicial es una copia a Opera.

    Incluso en el tema de la presentación han ido hacia atrás. No tiene ni un simple Zoom.

    Hasta la desinstalación me parece una burla, dice: “¿Estás seguro de que deseas desinstalar Google Chrome? (Es que hemos hecho algo mal?)”.

    Me parece un movimiento de marketing.

  5. “… me parece que esta solución de los “ingenieros” de software de google, es la más obvia, cutre y sobre todo la más fácil.”

    Pues es ni más ni menos que la misma mismita que va a implementar IE8 😛

    Además hasta donde yo sé, varios procesos pueden compartir una misma instancia de una DLL.

    Y sinceramente yo prefiero este modelo, en el que cada proceso ocupa sus 5-10 megas, que no el que utiliza IE7 (por ejemplo) que no es nada difícil ver que se te pone en 120 o 150 MB de RAM. Que como vayas pelín justo (150 más del SQL Server Management Studio, otros 150 o 200 del Visual Studio, otros tantos de una de las instancias de ‘svchost.exe’ que vete a saber qué hace) te va a dar dentera de lo que se pone a ‘rascar’ el disco.

  6. Ayy muchachos, se rompen el lado técnico de las cosas, es obvio marketing. No se uds. pero tienen que ver el fondo del asunto, la pelea de los estándares y todo ese rollo, así mismo lo del producto en si que planea desplazar al IE, ¿cuál es su página de inicio?, saquen la cuenta y verán q de 100, 70 u 80 son google.com y no otra (llámese live.com). Entonces “nosotros confiamos en google, por ende en su navegador tambien, y por ello consideramos mejor eso”. Posicionamiento y Estrategia
    No sólo de código y bits se vive.

  7. Estimado Rodrigo hasta la fecha y con el process explorer abierto y con varios tabs abiertos iexplore.exe está solo en el árbol de procesos de mi maquina, y por muchos tabs que abra, navegue por webs sigue siendo un mismo proceso en el que sube la memoria, baja, se crean threads y se cierran. Pruébalo tú mismo teniendo el process explorer abierto mientras navegas con el IE y si en algún momento vez que iexplore.exe abre internamente otro iexplore.exe (además de modo InPrivate) me avisas 🙂

  8. Yo lo que quería referirme con el chrome es que este nivel de aislamiento que han anunciado a bombo y platillo es la manera más fácil de hacerlo, claro que IE tiene aislamiento pero está implementado de otra manera mucho más granular. Y si alguien sabe lo más mínimo sobre cómo funciona Windows sabrá que el coste que tiene crear un proceso es grandísimo y un thread igual como para que google los ande desperdiciando a este nivel. Para que os hagáis una idea, Windows para crear un thread “gasta” aproximadamente 1 mega de memoria para reservar la pila, el stack y los registros del procesador, esto es el valor mínimo. Abre el process explorer y mira cuanto Threads tienes abiertos ahora, y multiplica, yo en el momento de escribir esto tengo 822 * 1 = 822 megas, ahí es nada. Mi única queja es que si lo mejor que ha sabido parir google con un sistema súper novedoso de aislamiento de tabs es esto, google deja mucho que desear, y como ejemplo he puesto el concepto que Microsoft puso en el Framework, AppDomain, que es un implementación más novedosa, y si alguien piensa lo contrario por favor que lo diga y exprese su argumentos pero razonando.

    Saludos.

  9. pues yo no me quejo del funcionamiento del chrome abre las páginas mucho más rápido que el ie y es un poco más veloz que el firefox. aun le faltan algunas actualizaciones que mejorarán su rendimiento pero yo ya uso más el chrome que el mozilla. la versión 3 del mozilla fue algo decepcionante para mi, porque algunas aplicaciones dejaron de funcionar. Por lo demás, está claro que google se lo ha currado en la campaña de publicidad, desde cuando un nuevo navegador sale en todos los telediarios?. de todas formas es curioso que google siga financiando a mozilla asta el 2011 y me da que google pone cara buena para acabar tomando el control de internet, de la informática y del mundo de la información. Que google anunciara a bombo y platillo su navegador es para robar usuarios a ie más que a mozilla, que en mi opinion este navegador irá degenerando hasta que los usuarios se pasen para el chrome.

  10. Personalmente que lo de abrir un proceso por cada objeto de una web, no es por pestaña. Es decir, codigo html proceso, java proceso, flash proceso. (multi thread) Es realmente mejor y NO es mas facil. Ya que programarlo e integrarlo es mas dificil. Hace posible que se cargen webs sin esperar a ningun elemento, por lo que si por alguna razon uno es lento o no se carga porque este corrompida la web. Esta no se quedara bloqueada sino que funcionara perfectamente, con ausencia del que da problemas. Tambien hay que reseñar que otros sistemas operativos, por ejemplo los de la familia UNIX (son de los unicos que puedo ver el fuente). Tienen mucha versatilidad al usar multi-thread. Si windows necesita 16 punteros indirectos para crear un proceso no es culpa de google sino de microsoft (Creo que lo de los 16 punteros indirectos es realmente real). En Unix es una llamada al proceso INIT y de hay hace algo un poco largo y que no viene al cuento. Con esto no quiero debatir entre sistemas operativos, solo que hay varios y no se puede ver lo que es mejor para uno. Ademas, vista no deberia tener problemas para mantener varios procesos.

    Es cierto que cada proceso necesita su espacio de memoria, que deberia ser el tema de debate en cuestion. Aun no he usado Chrome, ya que no esta para mi SO, pero eso es cuestion de hacer graficas, que seguro pronto saldran. Hay que tener en cuenta que la memoria es un recurso muy barato y que la gente llega a tener por regla general mas de 1 o 2 Gigas para juegos como minimo últimamente. Y el navegador esta en fase beta, que es posible que la estable salga el año que viene. Que seria el año en que empezaria que mirarse si los requisitos son exagerados o no. Pero si la gente que lo usa no trabaja mas lento el ordenador es que no hay problemas de memoria. Ademas han explicado que habian trabajado seriamente en la liberación de memoria, no dejando huecos libres reservados al matar procesos.

    Ahora no tengo en mente mas cosas por las que pueda ser malo la creación de multiples procesos. Ya que decir que es malo, porque a un sistema operativo no sabe controlarlos, es cosa del SO. El tiempo nos dara la razon a ti o a mi. Pero como es una herramienta de codigo abierto, nos la dara cuando en 2 años o antes. Todos los navegadores usen multi-thread o alguien haya modificado esa parte del navegador y nos bajemos como locos todos esa modificación del Chrome.

    Y menos preciar a los ingenieros de google creo que no viene a cuento. Ya que para entrar allí no hay que acabar primaria precisamente, que si estas en una empresa grande americana (ya sea microsoft, google, apple…) es que vales.

  11. Pues siguiendo un poco con el tema, yo lo unico que estoy diciendo es que este navegador de google no tiene nada de innovador. Vayamos por partes. Google coge el WebKit de Apple y le pone una ventana y un skin y ahora se “inventa” el aislamiento de tab a nivel de proceso, lo empaqueta lo pone en su web y dice que ha salido un nuevo navegado. Seamos serios, Iceweasel ya cogió el código fuente del FF y ha sacado un navegado, hay decenas de sucedáneos de FF en base a él. Google ha hecho lo mismo con webkit, porque no veo que haya hecho desde cero un motor de renderizado de html. Acepto que google se lo ha currado haciendo el motor de javascript nuevo. ¿Por lo demás?, pues tu porque sabes que un proceso está aislado de otro?, en Windows 98 no era así y si un proceso se corrompía el sistema se caída. Pues es así porque Microsoft implemento el aislamiento de los procesos dentro del sistema. Eso fue una innovación. Ahora google coge ese aislamiento que proporciona el proceso y lo usa para su beneficio al decir que él asila las web, no. La integración de los procesos se ha hecho con pipes, a poco que abras el proceso con process explorer verás los nobres de los pipes en los argumentos de la línea de comandos y los manejadores creado. Y te digo que esto integrarlo no es difícil porque Windows tiene una función de Win32 que te permite abrir un pipe como si fuera un fichero y así pasar información, así de sencillo. Así que no te creas que google se lo ha currado tanto, como para atreverse a decir que Google Chrome es el futuro de los navegadores y es un S.O. online, la crisis de Windows, el azote de Microsoft. Y porque si esto es así el código fuente de Chrome tiene un fichero .sln de solución de Visual Studio, que hubiera programado el navegador en un intérprete de javascript y se lo programen con el vi en consola y no con Visual Studio 2005. Todo el mundo raja de Microsoft pero bien que todo el mundo usa Windows y Visual Studio para los proyectos de verdad. Desde mi punto de vista no ha hecho nada más que agitar las aguas con un software basado en Software Libre que le ha puesto el logo de Google. Nada más.

  12. Voy a responderte a un par de cosas que creo que no son del todo exactas, pero sin malos royos.

    [Google coge el WebKit de Apple…]
    Teniendo en cuenta que es una herramienta open source, esa practica es totalmente licita, lo reconocen totalmente, ya que en ningun momento lo han negado. Como sera licito coger cualquier parte de chrome. Tambien tiene mas cosas innovadoras aparte de V8. Las sandboxes, es algo a destacar en la seguridad, por ejemplo.

    [en Windows 98 no era así y si un proceso se corrompía el sistema se caída. Pues es así porque Microsoft implemento el aislamiento de los procesos dentro del sistema. Eso fue una innovación.]
    Si y no… Es una innovación en el mundo windows, pero no una innovación en el mundo de los SO, ya que otros ya utilizaban ese procedimiento.

    [Chrome es el futuro de los navegadores y es un S.O. online, la crisis de Windows, el azote de Microsoft. Y porque si esto es así el código fuente de Chrome tiene un fichero .sln de solución de Visual Studio, que hubiera programado el navegador en un intérprete de javascript y se lo programen con el vi en consola y no con Visual Studio 2005. Todo el mundo raja de Microsoft pero bien que todo el mundo usa Windows y Visual Studio para los proyectos de verdad.]
    Aqui varias cosas.
    Que utilizen Visual Studio para la version de windows de chrome es logico. ya que es un framework bueno, por que entre otras cosas el compilador de forma natural mas util para compilar en windows es el que hace microsoft que tienen todas las expecificaciones de su SO.
    Pero ten en cuenta que ese framework es totalmente inutil para trabajar en la versión de MAC y la de Linux, por lo que en esas versiones utilizaran una framework par mac y otro para linux a la altura de cada uno de los otros, Y no veras archivos .sln en mac o linux.
    Tambien es posible que utilizen un framework propio que para hacer el programa utilize un compilador o otro dependiendo del SO al que este destinado.

    Y comparar VI con Visual Studio 2005, es sencillamente comparar un editor del año 1976 (MS-DOS aparecio en 1981) con un framework del 2005. No tiene sentido.

    […atreverse a decir que Google Chrome es el futuro de los navegadores y es un S.O. online]
    Obviamente eso es publicidad que se dan ellos, pero vamos, que cada empresa cuando habla de su producto se le llena la boca, a google y a todas y en cualquier ambito, no solo en informatica. Hay si te doy la razon. Ninguno peca de humilde y dice. “y el futuro dira si hemos hecho un producto bueno o insignificante para la informatica.” y ya.

    Ciao

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *