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 sistemas RHEL e CentOS que usam 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=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
Observaçã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/enabled
Verifique 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-pages
Para 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/defrag
No 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/defrag
A saída deve se assemelhar ao seguinte:
never never
Crie o init.d script
Crie o seguinte arquivo e salve-o em /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
Execute o script
Executar:
sudo /etc/init.d/disable-transparent-hugepages start
Para 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/defrag
No 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/defrag
A saída deve se assemelhar ao seguinte:
never never
Configure seu sistema operacional para executá-lo na inicialização.
Para garantir que essa configuração seja aplicada sempre que o sistema operacional for iniciado, execute o seguinte comando para sua distribuição Linux:
Distribuição | Comando | |
|---|---|---|
Ubuntu e Debian | | |
SUSE | | |
Red Hat, CentOS, Amazon Linux e derivados | |
Uso de e tuned 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 do kernel que podem afetar a configuração de Transparent Hugepages em seu sistema. Se você usar tuned ou ktune no seu sistema RHEL ou CentOS enquanto estiver executando mongod, deverá criar um perfil tuned personalizado para garantir que o THP permaneça desativado.