Login Barrapunto
Firefox usará el asignador de memoria de FreeBSD
Entrada escrita por mig21 y
editada por Yonderboy
el 20 de Febrero 2008, 19:37h
desde el dept. gestión-de-memoria
desde el dept. gestión-de-memoria
Leo 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.
Firefox usará el asignador de memoria de FreeBSD
|
Log in/Crear cuenta
| Top
| 81 comentarios
| Buscar hilo
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.

Para conocer el proceso de análisis y selecci
(Puntos:5, Informativo)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)No está en la beta3
(Puntos:2, Informativo)Sobre la gestión de memoria
(Puntos:1)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
La verdad está ahí fuera, ¡pero como corre la jodia!
Re:Se les ve desesperadillos
(Puntos:2, Inspirado)( http://www.unicauca.edu.co/~cbedon )
Hoy estrenando en Barrapunto "Kill Bill
Re:malloc?
(Puntos:3, Interesante)( http://localhost:8080/ )
--------
Así habló Zaratustra.
Re:malloc?
(Puntos:5, Informativo)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.
Re:malloc?
(Puntos:4, Informativo)( http://yapw.blogspot.com/ | Última bitácora: Lunes, 18 Agosto de 2008, 06:51h )
La nostalgia ya no es lo que era.
Re:Se les ve desesperadillos
(Puntos:1)( http://www.badopi.org/ )
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.
Otro que se monta una bitácora [barnacity.net], y que cree que a los demás les importa.
Re:malloc?
(Puntos:5, Informativo)( http://barrapunto.com/index.pl?section=mbp-draco | Última bitácora: Viernes, 18 Julio de 2008, 19:56h )
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
Re:Se les ve desesperadillos
(Puntos:2)( http://www.losviajesdelcamarografo.com/ | Última bitácora: Miércoles, 06 Agosto de 2008, 20:33h )
openSUSE 11.0 [opensuse.org]
Re:malloc?
(Puntos:3, Informativo)( http://drupal.gulic.org/blog/aplatanado )
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.