Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Buscador

Entradas Mensuales

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

Foro de elhacker.net - Noticias

elhacker.NET en Facebook

Entradas populares

PostHeaderIcon gperftools, la implementación malloc() de Google




google-perftools (gperftools, tcmalloc) es una colección de un alto rendimiento multi-threaded implementado la función malloc(), además de algunas herramientas de análisis de rendimiento.





Introducción

Los asignadores de memoria forman parte de interesantes estudios de la ingeniería de software. Esta asignador proporciona implementaciones del standard de rutinas de C, malloc(), free() y realloc()

gperftools incluye  TCMalloc (Thread-Caching Malloc), heap-checker, heap-profiler y cpu-profiler.

Si tienes un servidor con más de 8 núcleos (cores) deberías usar algo diferente que el asignador de memoria predeterminada de glibc.

Instalación

wget http://code.google.com/p/gperftools/downloads/detail?name=gperftools-2.0.tar.gz
tar xvzf gperftools-2.0.tar.gz
cd gperftools-2.0
./configure (usar --enable-frame-pointers) si estás usando sistema x86-64 y mira libunwind))
make
make install



Uso


Puede utilizar tcmalloc en aplicaciones que no has compilado tu mismo, mediante el uso de LD_PRELOAD:

$ LD_PRELOAD="/usr/lib/libtcmalloc.so"

También puedes instalar gperftools usando yum (CentOS, RHEL, Fedora, etc) (sin tener que compilar) usando el repositorio epel (o tipo atrpms, rpmfusion, rpmforge, etc) :


yum install gperftools-libs --enablerepo=epel


el cuál instala:


  • /usr/lib64/libtcmalloc.so.4 
  •   /usr/lib64/libtcmalloc_minimal.so.4 

PostHeaderIcon Gestión de librerías compartidas en GNU/Linux

Y usar por ejemplo MySQL:
export LD_PRELOAD="/usr/lib64/libtcmalloc_minimal.so.4" && binario mysql
También puedes tratar de jemalloc que supuestamente está cerca del rendimiento de tcmalloc 
pero utiliza menos memoria:

yum install jemalloc --enablerepo=epel
El cuál instala:
  • /usr/lib64/libjemalloc.so.1 

Ejemplo uso MySQL (mysqld)

Y usarla para tu ejecutable (binario)
  • export LD_PRELOAD="/usr/lib64/libjemalloc.so.1" && binario
O añadir en el my.cnf la librería que quieres usar:
[mysqld_safe] 
  • malloc-lib=/usr/lib64/libtcmalloc_minimal.so.4 
  • malloc-lib=/usr/lib64/libjemalloc.so.1
El nombre de la biblioteca para usar para la asignación de memoria en lugar de lalibrería del sistema de malloc(). Cualquier librería se puede utilizar al especificar el nombre de ruta, pero hay una forma de acceso directo para permitir el usode la librería tcmalloc que se incluye con las distribuciones de MySQL binarios para Linux en MySQL 5.5.
La opción malloc-lib funciona modificando el valor de entorno LD_PRELOAD para afectar la vinculación dinámica para que el cargador para encontrar la librería de asignación de memoria cuando se ejecuta mysqld.
  • Si la opción no se da, o se da sin un valor (- malloc-lib =), LD_PRELOAD no se modifica y no se intenta utilizar tcmalloc.
  • Si se da la opción como - malloc-lib = tcmalloc, mysqld_safe busca una biblioteca tcmalloc en / usr / lib y luego en la ubicación pkglibdir MySQL (por ejemplo, / usr / local / mysql / lib o lo que sea apropiado). Si tmalloc es encontrado, su nombre de ruta se añade al principio del valor LD_PRELOAD para mysqld. Si tcmalloc no se encuentra, mysqld_safe aborta con un error.
  • Si se da la opción como - malloc-lib = / ruta / a / algun / biblioteca, la ruta completa se agrega al principio del valor LD_PRELOAD. Si la ruta completa a un archivo inexistente o ilegible, mysqld_safe aborta con un error.
  • Para los casos en que mysqld_safe añade un nombre de ruta para LD_PRELOAD, se agrega la ruta de inicio de cualquier valor existente de la variable ya tiene. Los usuarios de Linux pueden utilizar el libtcmalloc_minimal.so incluidos en los paquetes binarios añadiendo estas líneas al archivo my.cnf:
[mysqld_safe] malloc-lib = tcmalloc
Estas líneas también son suficientes para los usuarios en cualquier plataforma que ha instalado un paquete tcmalloc en /usr/lib. Para utilizar una biblioteca tcmalloc específico, especifique el nombre de ruta completo. ejemplo:
[mysqld_safe] malloc-lib = /opt/lib/libtcmalloc_minimal.so

Otras opciones (Memory allocators) C++

Instalación jemalloc

wget http://www.canonware.com/download/jemalloc/jemalloc-3.3.1.tar.bz2 tar -xjvf jemalloc-3.3.1.tar.bz2 cd jemalloc-3.3.1 ./configure make && sudo make install export LD_PRELOAD=$LD_PRELOAD:/usr/local/lib/libjemalloc.so

0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.