Importante
Atualizou TCMalloc no MongoDB 8.0
A partir do MongoDB 8.0, O MongoDB usa uma versão atualizada do TCMalloc que melhora o desempenho com o Transparent Hugepages habilitado. Se você estiver usando o MongoDB 8.0 ou posterior, consulte Habilitar hugepages transparentes (THP).
Transparent Hugepages (THP) é um sistema de gerenciamento de memória Linux que reduz a sobrecarga de pesquisas de TRB (Translation Lookaside Buffer). O THP consegue isso combinando páginas pequenas e fazendo com que apareçam como páginas de memória maiores para o aplicação.
Ao executar o MongoDB 7.0 ou anterior no Linux, o THP deve ser desabilitado para melhor desempenho. Em versões anteriores do MongoDB, as cargas de trabalho do banco de dados de dados geralmente apresentam um desempenho reduzido com o THP ativado porque geralmente usam padrões de acesso à memória não contÃguos.
Observação
O THP opera no nÃvel do sistema, portanto, se aplica a todos os processos do sistema. Você não pode habilitar ou desabilitar o nÃvel por processo do THP.
Para garantir que o THP esteja desativado antes do inÃcio do mongod , crie um arquivo de serviço para seu sistema operacional que desative o THP na inicialização. As instruções a seguir incluem exemplos para os sistemas de inicialização systemd e System V init .
Além disso, para RHEL e sistemas CentOS que usam os perfis de desempenho ktune e tuned, você também deve criar um perfil tuned personalizado.
Crie um arquivo de serviço
Para criar um arquivo de serviço que desabilita THP, use o sistema de inicialização integrado para seu sistema operacional. Versões recentes do Linux normalmente utilizam systemd, que utiliza o comando systemctl . Versões mais antigas do Linux utilizam o System V init, que utiliza o comando service . Para obter mais informações, consulte a documentação do seu sistema operacional.
Use o sistema de inicialização do seu sistema operacional:
Crie o systemd arquivo de unidade
Crie o seguinte arquivo e salve-o em /etc/systemd/system/disable-transparent-huge-pages.service:
[Unit]Description=Disable Transparent Hugepages (THP)DefaultDependencies=noAfter=sysinit.target local-fs.targetBefore=mongod.service
[Service]Type=oneshotExecStart=/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.targetObservação
Algumas versões do Red Hat Enterprise Linux, e possivelmente outros derivados baseados no Red Hat, usam um caminho diferente para o arquivo THP enabled:
/sys/kernel/mm/redhat_transparent_hugepage/enabledVerifique qual caminho está em uso em seu sistema e atualize o arquivo disable-transparent-huge-pages.service de acordo.
Iniciar o serviço
Executar:
sudo systemctl start disable-transparent-huge-pagesPara verificar se as configurações relevantes do THP foram alteradas, execute o seguinte comando:
cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defragNo Red Hat Enterprise Linux, e possivelmente em outros derivados baseados no Red Hat, talvez você precise usar o seguinte:
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled && cat /sys/kernel/mm/redhat_transparent_hugepage/defragA saÃda deve se assemelhar ao seguinte:
neverneverCrie o script init.d
Crie o seguinte arquivo e salve-o em /etc/init.d/disable-transparent-hugepages:
### 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 exit 0 fi
echo 'never' | tee ${thp_path}/enabled > /dev/null && echo 'never' | tee ${thp_path}/defrag > /dev/null
unset thp_path ;;esacExecute o script
Executar:
sudo /etc/init.d/disable-transparent-hugepages startPara verificar se as configurações relevantes do THP foram alteradas, execute o seguinte comando:
cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defragNo Red Hat Enterprise Linux, e possivelmente em outros derivados baseados no Red Hat, talvez você precise usar o seguinte:
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled && cat /sys/kernel/mm/redhat_transparent_hugepage/defragA saÃda deve se assemelhar ao seguinte:
neverneverConfigure seu sistema operacional para executá-lo na inicialização.
Para garantir que essa configuração seja aplicada toda vez que o sistema operacional for iniciado, execute o seguinte comando para sua distribuição do Linux:
Distribuição | Comando |
|---|---|
Ubuntu e Debian | |
SUSE | |
Red Hat, CentOS, Amazon Linux e derivados | |
Uso de tuned e ktune
Importante
Se você usar tuned ou ktune, execute as etapas nesta seção após criar o arquivo de serviço.
tuned e ktune são utilitários de ajuste de configurações do kernel que podem afetar a configuração da Transparent Hugepages no seu sistema. Se você usar tuned ou ktune no seu sistema RHEL ou CentOS enquanto estiver executando mongod, você deve criar um perfil tuned personalizado para garantir que a THP permaneça desativada.