Importante
TCMalloc actualizado en MongoDB 8.0
A partir de MongoDB 8.0, MongoDB utiliza una versión mejorada de TCMalloc que mejora el rendimiento con las páginas enormes transparentes habilitadas. Si utiliza MongoDB 8.0 o posterior, consulte Habilitar páginas enormes transparentes (THP).
Transparent Hugepages (THP) es un sistema de gestión de memoria de Linux que reduce los gastos en general de las búsquedas en el Translation Lookaside Buffer (TLB). THP logra esto combinando páginas pequeñas y haciendo que se presenten como páginas de memoria más grandes para la aplicación.
Cuando se ejecuta MongoDB 7.0 o una versión anterior en Linux, THP debe estar desactivado para obtener el mejor rendimiento. En versiones anteriores de MongoDB, las cargas de trabajo de bases de datos a menudo experimentaban disminución del rendimiento con THP activado porque suelen usar patrones de acceso a memoria no contiguos.
Nota
THP opera a nivel de sistema, por lo que se aplica a todos los procesos del sistema. No puede activar ni desactivar THP a nivel de proceso.
Para garantizar que THP esté deshabilitado antes mongodAl iniciarse, cree un archivo de servicio para su sistema operativo que deshabilite THP al arrancar. Las siguientes instrucciones incluyen ejemplos para los sistemas de inicialización systemd y System V init.
Además, para Para los sistemasRHEL y CentOS que utilizan ktune tuned perfiles de rendimiento y, también debe crear un tuned perfil personalizado.
Cree un archivo de servicio
Para crear un archivo de servicio que deshabilite THP, utilice el sistema de inicialización integrado de su sistema operativo. Las versiones recientes de Linux suelen usar systemd, que utiliza el systemctl comando. Las versiones anteriores de Linux usan System V init, que utiliza el comando. Para obtener más información, consulte service la documentación de su sistema operativo.
Utilice el sistema de inicialización correspondiente a su sistema operativo:
Crear el systemd archivo de unidad
Cree el siguiente archivo y guárdelo en /etc/systemd/system/disable-transparent-huge-pages.service:
[Unit] Description=Disable Transparent Hugepages (THP) DefaultDependencies=no After=sysinit.target local-fs.target Before=mongod.service [Service] Type=oneshot ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo never | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null' [Install] WantedBy=basic.target
Nota
Algunas versiones de Red Hat Enterprise Linux, y potencialmente otros derivados basados en Red Hat, utilizan una ruta diferente para el archivo THP enabled:
/sys/kernel/mm/redhat_transparent_hugepage/enabled
Verificar qué ruta está en uso en el sistema y actualizar el archivo disable-transparent-huge-pages.service en consecuencia.
Inicie el servicio
Ejecuta:
sudo systemctl start disable-transparent-huge-pages
Para verificar que los ajustes relevantes de THP han cambiado, ejecute el siguiente comando:
cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag
En Red Hat Enterprise Linux y, posiblemente, en otros derivados basados en Red Hat, es posible que se necesite utilizar lo siguiente:
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled && cat /sys/kernel/mm/redhat_transparent_hugepage/defrag
La salida debería asemejarse a lo siguiente:
never never
Crear el init.d script
Cree el siguiente archivo y guárdelo en /etc/init.d/disable-transparent-hugepages:
!/bin/bash ## BEGIN INIT INFO Provides: disable-transparent-hugepages Required-Start: $local_fs Required-Stop: X-Start-Before: mongod mongodb-mms-automation-agent Default-Start: 2 3 4 5 Default-Stop: 0 1 6 Short-Description: Disable Linux Transparent Hugepages Description: Disable Linux Transparent Hugepages, to improve database performance. ## END INIT INFO case $1 in start) if [ -d /sys/kernel/mm/transparent_hugepage ]; then thp_path=/sys/kernel/mm/transparent_hugepage elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then thp_path=/sys/kernel/mm/redhat_transparent_hugepage else return 0 fi echo 'never' | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo 'never' | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null unset thp_path ;; esac
Ejecute el script
Ejecuta:
sudo /etc/init.d/disable-transparent-hugepages start
Para verificar que los ajustes relevantes de THP han cambiado, ejecute el siguiente comando:
cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag
En Red Hat Enterprise Linux y, posiblemente, en otros derivados basados en Red Hat, es posible que se necesite utilizar lo siguiente:
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled && cat /sys/kernel/mm/redhat_transparent_hugepage/defrag
La salida debería asemejarse a lo siguiente:
never never
Configurar el sistema operativo para que se ejecute al arrancar
Para asegurarse de que esta configuración se aplique cada vez que se inicie el sistema operativo, ejecute el siguiente comando para su distribución de Linux:
Distribución | Comando | |
|---|---|---|
Ubuntu y Debian | | |
SUSE | | |
Red Hat, CentOS, Amazon Linux y derivados | |
Usando tuned y ktune
Importante
Si se utiliza tuned o ktune, realizar los pasos de esta sección después de crear el archivo de servicio.
tuned y ktune son utilidades de optimización del kernel que pueden afectar la configuración de Transparent Hugepages en su sistema. Si usa tuned o ktune en su sistema RHEL o CentOS mientras mongod ejecuta, debe crear un tuned perfil personalizado para garantizar que THP permanezca deshabilitado.