¿Cómo actúa jemalloc? ¿Cuáles son los beneficios?


Firefox 3 viene con un nuevo asignador: jemalloc.

He oído en varios lugares que este nuevo asignador es mejor. Los principales resultados de Google no dieron ninguna información adicional, sin embargo, y estoy interesado en cómo funciona exactamente.

Author: Just a student, 2009-10-26

4 answers

jemalloc apareció por primera vez para FreeBSD, la creación de un "Jason Evans", de ahí el"je". Lo ridiculizaría por ser egoísta si no hubiera escrito una vez un sistema operativo llamado paxos :-)

Ver este PDF para más detalles. Es un libro blanco que describe en detalle cómo funcionan los algoritmos.

El principal beneficio es la escalabilidad en sistemas multiprocesador y multiprocesado logrado, en parte, mediante el uso de múltiples arenas (los trozos de memoria raw de los que las asignaciones se hacen).

En situaciones de un solo hilo, no hay ningún beneficio real para múltiples arenas, por lo que se utiliza una sola arena.

Sin embargo, en situaciones de subprocesos múltiples, se crean muchas arenas (cuatro veces más arenas que hay procesadores), y los subprocesos se asignan a estas arenas de una manera round-robin.

Esto significa que la contención de bloqueo se puede reducir ya que, mientras que varios hilos pueden llamar a malloc o free simultáneamente, solo contenderán si comparten la misma arena. Dos los hilos con diferentes arenas no se afectarán entre sí.

Además, jemalloc intenta optimizar la ubicación de la caché ya que el acto de obtener datos de la RAM es mucho más lento que el uso de datos ya en las cachés de la CPU (no es diferente en concepto a la diferencia entre la obtención rápida de la RAM frente a la obtención lenta desde el disco). Con ese fin, primero intenta minimizar el uso de memoria en general, ya que es más probable que garantice que todo el conjunto de trabajo de la aplicación esté en caché.

Y, donde eso no se puede lograr, intenta asegurarse de que las asignaciones sean contiguas, ya que la memoria asignada en conjunto tiende a usarse en conjunto.

Desde el libro blanco, estas estrategias parecen dar un rendimiento similar a los mejores algoritmos actuales para el uso de un solo subproceso, mientras que ofrece mejoras para el uso de múltiples subprocesos.

 77
Author: paxdiablo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-17 06:52:40

Hay una fuente interesante: la propia fuente-C: http://mxr.mozilla.org/mozilla-central/source/memory/mozjemalloc/jemalloc.c

Al principio, un breve resumen describe cómo funciona aproximadamente. Sin embargo, falta un análisis de algoritmo más profundo.

 9
Author: Albert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-08 19:00:54

En cuanto a los beneficios que jemalloc trajo a mozilla, per http://blog.pavlov.net/2008/03/11/firefox-3-memory-usage/ (también el primer resultado de Google para mozilla+jemalloc):

[...] concluyó que jemalloc nos dio la menor cantidad de fragmentación después de funcionar durante un largo período de tiempo. [...] Nuestras pruebas automatizadas en Windows Vista mostraron una caída del 22% en el uso de memoria cuando activamos jemalloc.

 4
Author: Nickolay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-26 13:40:03

Aerospike implementó jemalloc de nuevo en una sucursal privada en 2013. En 2014, se incorporó a Aerospike 3.3. Psi Mankoski acaba de escribir sobre la implementación de Aerospike, además de cuándo y cómo usar jemalloc de manera efectiva, para Alta Escalabilidad .

Jemalloc realmente ayudó a Aerospike a aprovechar las modernas arquitecturas de computadoras multihilo, multi-CPU y multi-núcleo. También hay algunas capacidades de depuración muy importantes integradas en jemalloc para administrar arenas. Depuración permitió a Psi ser capaz de decir, por ejemplo, lo que era una verdadera fuga de memoria, versus lo que era el resultado de la fragmentación de la memoria. Psi también analiza cómo la caché de subprocesos y la asignación por subprocesos proporcionaron una mejora general del rendimiento (velocidad).

 1
Author: Peter Corless,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-17 18:12:59