Historias
Slashboxes
Comentarios
 

Login Barrapunto

Login

[ Crear nueva cuenta ]

mig21 (7781)

mig21
  reversethis-{moc.liamg} {ta} {pb12gim}
https://twitter.com/yapw

Hola, soy Miguel. Algo que pueda ser relevante aquí... Uhmm... Me gusta escribir en mi bitácora de BP [barrapunto.com] y en su clon en blogspot: Yet Another Programming Weblog [blogspot.com]
Me gustaría que Barrapunto fuese un sitio con más discusiones técnicas y trato de hacer lo que está en mi mano. De todos modos, también me gusta leer flames ;)

No creo que te interese, pero en Lecturas aleatorias [blogspot.com] dejo registro de los libros que voy leyendo...

Esta es toda mi información de usuario :)

Down Kill Up Publicidad

Bitácora de mig21 (7781)

Miércoles, 20 de Febrero 2008

Firefox usará el "allocator" experimental de FreeBSD

05:50h.
Mozilla
Leo en (cómo no...) en programming.reddit que Firefox 3 beta 3 utiliza el asignador de memoria dinámica de la rama experimental de FreeBSD (jemalloc) en lugar del asignador de la plataforma de ejecución. Al parecer ha dado buenos resultados en cuanto velocidad y reducción de la fragmentación en los test de rendimiento para las tres plataformas mayoritarias (Windows, Mac OS X y Linux)

Para el que esté interesado en estos temas hay disponible un artículo muy interesante sobre jemalloc: A Scalable Concurrent malloc(3) Implementation for FreeBSD (pdf) en el que se explica su implementación, que coge ideas entre otros de hoard, y ciertamente tiene muy buena pinta. Hablé de hoard hace poco en Problemas de memoria (y algunas soluciones).
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • por rodio (32755) el Miércoles, 20 Febrero de 2008, 20:25h (#1017723)

    Para aquellos que sepan inglés, se puede seguir el proceso de cómo se plantearon el análisis de la fragmentación de memoria en Firefox y las posibles soluciones hasta elegir jmalloc, así como las dificultades encontradas y las mejoras que han ido introduciendo, viendo las entradas sucesivas que fue escribiendo Pavlov (uno de los diseñadores):

    http://wordpress.com/tag/memory-fragmentation/ [wordpress.com]

    Aconsejo leerlas todas empezando desde la entrada más antigua, porque al menos a mí me pareció bastante interesante.

  • Firefox = Emacs

    (Puntos:3, Divertido)
    por pobrecito hablador el Miércoles, 20 Febrero de 2008, 22:20h (#1017775)
    Ahora ya incluyen hasta su propio gestor de memoria. Para cuándo un Firefox standalone sin sistema operativo?

  • No está en la beta3

    (Puntos:2, Informativo)
    por pobrecito hablador el Miércoles, 20 Febrero de 2008, 23:01h (#1017791)

    Y en el artículo enlazado [blogspot.com] también dice que jemalloc está sólo en las "nightly builds".
  • por errepunto (22529) el Jueves, 21 Febrero de 2008, 09:16h (#1017887)
    ( https://blog.rcorral.es/ | Última bitácora: Martes, 29 Junio de 2010, 11:58h )
    Guau, creo que o estoy yo muy confundido o están muy confundidos los demás :D

    El sistema operativo gestiona la memoria que las aplicaciones le solicitan. Si firefox le pide memoria y memoria y más memoria, le irá dando memoria RAM mientras pueda, y cuando ya no pueda tirará de memoria virtual (swap memory).

    Si "enseñamos" a la aplicación a pedir memos memoria, a que reutilice y libere de forma más eficiente y a que mueva los bloques de memoria (vital para evitar fragmentación) de forma más eficiente, sobre cargamos menos la memoria en general y la gestión se hace mucho más rápida.

    Muchas veces la cantidad de memoria consumida aumenta espectacularmente porque no se hace un free en el momento adecuado y la velocidad de ejecución puede caer por una gestión ineficiente de los bloques de memoria que tiene asignados por el sistema operativo.

    Lo que no entiendo es por qué no se ha implementado un recolector de basura que automatice estas tareas. Supongo que será como matar moscas a cañonazos, pero bueno. A ver como aumenta el rendimiento con la beta 3 (y si mejora aún más en las siguientes versiones, jeje).

    Saludos
    --
    Disculpe que no me disculpe
  • Re:Se les ve desesperadillos

    (Puntos:2, Inspirado)
    por snookiex (35574) el Miércoles, 20 Febrero de 2008, 20:17h (#1017722)
    ( http://www.kuwaiba.org/ | Última bitácora: Martes, 19 Abril de 2011, 14:25h )
    No he usado interfaces basadas en XUL, me podrías decir por qué decís que es un engendro? el concepto en sí es muy interesante como para descalificarlo totalmente. Me gustaría que alguien que haya trabajado de primera mano con ello nos diera una luz al respecto.
    --
    ¡Inventario de red para las masas! Kuwaiba Open Network Inventory [sourceforge.net]
    [ Padre ]
  • Re:malloc?

    (Puntos:3, Interesante)
    por afobutu (20358) el Miércoles, 20 Febrero de 2008, 21:28h (#1017743)
    ( http://localhost:8080/ )
    Igual me equivoco, pero lo que hará será pedir al principio una gran cantidad de memoria contigua al S.O., y luego gestionarla internamente para ir dándose trocitos a sí mismo, así, chabacanamente explicado.
    --

    --------
    Así habló Zaratustra.
    [ Padre ]
    • Re:malloc? de afobutu (Puntos:2) Miércoles, 20 Febrero de 2008, 23:18h
    • 1 respuesta por debajo de tu umbral de lectura actual.
  • Re:malloc?

    (Puntos:5, Informativo)
    por pobrecito hablador el Miércoles, 20 Febrero de 2008, 21:37h (#1017749)
    El programador sabe mejor que el sistema operativo el uso que va a dar a la memoria. Un ejemplo sencillo es cuando trabajas con colecciones de cadenas: puedes hacer un malloc/una reserva por cada cadena que vayas necesitando pero es más efeciente reservar al principio una pool grande común a todas e ir repartiendo la memoria a discrección.

    Otra ventaja es que, al hacer solo una asignación real (un malloc), solo con un free has liberado todas las cadenas. Eso simplifica la liberación de recursos en caso de error o al finalizar el algoritmo (claro que complica la liberación de cadenas sueltas)

    No es el caso porque gecko está escrito en un subconjunto de C++ pero fíjate si es común aplicar tu propio esquema de manejo de memoria que ese lenguaje ya viene preparado para que "enchufes" el tuyo, tanto si trabajas con contenedores estándar [sgi.com] como si no lo haces [glenmccl.com]. En otros lenguajes como Java no hay esa flexibilidad pero sigues teniendo el recolector de basura que aplica su propio esquema sobre los malloc/free del sistema.
    [ Padre ]
    • Re:malloc? de pobrecito hablador (Puntos:2) Jueves, 21 Febrero de 2008, 01:20h
    • Re:malloc? de Reynard (Puntos:1) Jueves, 21 Febrero de 2008, 04:11h
    • 1 respuesta por debajo de tu umbral de lectura actual.
  • Re:malloc?

    (Puntos:4, Informativo)
    por mig21 (7781) <reversethis-{moc.liamg} {ta} {pb12gim}> el Miércoles, 20 Febrero de 2008, 22:50h (#1017787)
    ( https://twitter.com/yapw | Última bitácora: Viernes, 13 Mayo de 2011, 21:21h )
    creo que este enlace responde a tu pregunta: jemalloc builds [pavlov.net]
    --
    Aquí había una firma
    [ Padre ]
  • por suy (8275) el Miércoles, 20 Febrero de 2008, 23:43h (#1017813)
    ( http://www.badopi.org/ | Última bitácora: Martes, 18 Septiembre de 2012, 18:45h )

    De programación multiplataforma sí sabe (C++ lo es). De lo que no sabe es de programación GUI, ya que C++ no tiene un API estándar para hacer GUIs.

    --

    Escribiendo de demasiadas cosas [barnacity.net] desde 2003.

    [ Padre ]
  • Re:malloc?

    (Puntos:5, Informativo)
    por Draco (3721) el Jueves, 21 Febrero de 2008, 07:30h (#1017859)
    ( Última bitácora: Lunes, 22 Febrero de 2016, 07:16h )
    Depende a qué llames "Sistema Operativo".

    Si con eso te refieres tan solo al kernel, verás que no hay ninguna llamada al sistema "malloc". Hay brk(), que simplemente aumentan el tamaño del heap y mmap() que reserva zonas completas de memoria, normalmente del tamaño de páginas.

    mmap() funciona en espacio de usuario y hace uso de estas llamadas. Tú puedes usar el malloc por defecto en tu sistema, o usar el tuyo propio(en Solaris vienen varias implementaciones de malloc).
    --

    Programs should be written for people to read, and only incidentally for machines to execute

    [ Padre ]
    • Re:malloc? de mig21 (Puntos:2) Jueves, 21 Febrero de 2008, 08:50h
    • 1 respuesta por debajo de tu umbral de lectura actual.
  • por djworld (10393) el Jueves, 21 Febrero de 2008, 08:06h (#1017865)
    ( Última bitácora: Jueves, 31 Enero de 2013, 09:47h )
    Ejem... ¿por ejemplo Google Earth y Skype? Si quieres más aquí tienes algunas: http://trolltech.com/customers/coolapps [trolltech.com]. De todas formas, eso no es excusa para no usarlo.
    --
    openSUSE [opensuse.org]
    [ Padre ]
  • Re:malloc?

    (Puntos:3, Informativo)
    por aplatana2 (22096) el Jueves, 21 Febrero de 2008, 10:23h (#1017915)
    ( http://drupal.gulic.org/blog/aplatanado )
    Como ya se ha dicho en otros comentarios malloc no es una llamada del sistema en Linux. Es una función de la libc que se implementa mediante una pocas llamadas. Así que parte del trabajo de gestionar la memoria del proceso la hace la propia libc, normalmente pidiendo grandes cantidades de memoria al sistema para posteriormente dividirla y asignarla según lo pida el programa mediante malloc.

    Como ejemplo me acuerdo de cuando programaba en Borlanda para Windows. Ellos decían que tenían la mejor gestión de memoria. Mucho más eficiente que la del runtime de Microsoft. Pero eso no evita que tuvieran que utilizar las llamadas al sistema para pedir la memoria al windows.
    [ Padre ]
  • 3 respuestas por debajo de tu umbral de lectura actual.