Cómo cambiar el tamaño de los archivos cargados en la base de datos MySQL de Linux
El proceso de Linux solicita memoria del sistema a través de la función de asignación de memoria malloc en la biblioteca estándar de C, pero para interactuar realmente con el kernel, en realidad existe una capa de administrador de asignación de memoria (asignador de memoria). entre. Los asignadores de memoria comunes incluyen ptmalloc (Glibc), tcmalloc (Google) y jemalloc (FreeBSD). MySQL utiliza ptmalloc de glibc como asignador de memoria de forma predeterminada.
El asignador de memoria utiliza un método de gestión del grupo de memoria entre la capa del programa del usuario y la capa del núcleo. Responde a las solicitudes de asignación del usuario, solicita memoria del sistema operativo y luego devuelve la memoria al programa del usuario.
Para mantener una asignación eficiente, el asignador generalmente solicita un bloque de memoria del sistema operativo por adelantado. Cuando el programa de usuario solicita y libera la memoria, el asignador administrará la memoria y utilizará algunas estrategias de algoritmo para hacerlo. Decide si devolverlo al sistema operativo. El mayor beneficio de esto es que evita que el programa de usuario llame con frecuencia al sistema para asignar memoria, lo que hace que el uso de la memoria del programa de usuario sea más eficiente y rápido.
No sé mucho sobre el principio de asignación de memoria de ptmalloc, así que no se lo mostraré. Si está interesado, puede consultar el análisis del código fuente de ptmalloc de administración de memoria Glibc de Huating.
Con respecto a cómo elegir entre los tres asignadores de memoria, la mayoría de las fuentes en línea recomiendan abandonar el ptmalloc nativo de glibc y usar jemalloc o tcmalloc como asignador predeterminado. Los principales problemas de ptmalloc son el desperdicio de memoria, la fragmentación de la memoria y los problemas de rendimiento causados por el bloqueo, mientras que jemalloc y tcmalloc están mejor optimizados para la fragmentación de la memoria y los subprocesos múltiples.
Actualmente, jemalloc se usa en navegadores como Firefox y FaceBook, y es el asignador de memoria predeterminado recomendado para MariaDB, Redis y Tengine, mientras que tcmalloc se usa en navegadores como WebKit y Chrome.