Estamos instalando o SAP HANA em uma máquina RAID . Como parte da etapa de instalação, é mencionado que,
To disable the usage of transparent hugepages set the kernel settings
at runtime with echo never > /sys/kernel/mm/transparent_hugepage/enabled
Então, em vez de tempo de execução, se eu quisesse fazer uma alteração permanente, devo adicionar a linha acima dentro do /proc/vmstat
arquivo?
Respostas:
Para tornar opções como essa permanentes, você normalmente as adiciona ao arquivo
/etc/sysctl.conf
. Você pode ver uma lista completa das opções disponíveis usando este comando:Exemplo
Você pode procurar
hugepage
na saída assim:Não está aí?
No entanto, olhando através da saída eu não vi
transparent_hugepage
. Pesquisando um pouco mais, encontrei esta página da Oracle que discute esse mesmo tópico. A página tem o título: Configurando o HugePages para Oracle no Linux (x86-64) .Especificamente nessa página, eles mencionam como desativar o recurso enorme página .
excerto
Como alternativa, você pode adicionar o comando ao seu
/etc/rc.local
arquivo.Eu acho que iria com a segunda opção, já que a primeira corre o risco de ficar desconfigurada quando você atualiza de um kernel para o próximo.
Você pode confirmar que funcionou com o seguinte comando após a reinicialização:
fonte
cat /sys/kernel/mm/transparent_hugepage/enabled
é[always] madvise never
, então o status éalways
ou está ativado (observe os[]
colchetesalways
)sudo update-grub
para obter as novas configurações "escritas em pedra". +1 para apontar a linha do arquivo grub.Eu só queria acrescentar a esta pergunta, enquanto tentava desabilitar enormes páginas transparentes no CentOS v6 para ativar o TokuDB para MariaDB. Eu adicionei o script mencionado por @slm a
/etc/rc.local
e desabilitou enormes páginas transparentes. No entanto, devido à maneira como os scripts de inicialização funcionam no Linux,/etc/rc.local
é executado depois que todos os serviços são iniciados. Portanto, páginas enormes e transparentes estavam sendo desabilitadas depois que o MariaDB já havia sido iniciado e o mecanismo TokuDB não inicializou. A única outra maneira de desativar enormes páginas transparentes é adicionandotransparent_hugepage=never
ao parâmetro do kernel.Percebi o comentário do @ Rwky
You can make the first option survive kernel updates by adding transparent_hugepage=never to the GRUB_CMDLINE_LINUX_DEFAULT option in /etc/default/grub on most distributions.
e descobri que o CentOS não suporta o/etc/default/grub
arquivo e estava preocupado emtransparent_hugepage=never
desaparecer dos parâmetros do kernel quando ele é atualizado. Mas não se preocupe, o CentOS está configurado para manter as alterações feitas nos parâmetros do kernel no grub; portanto, quando atualizadas, elas são mantidas.Para adicionar também, a maneira correta de modificar os parâmetros do kernel para grub é com
grubby
. Eu criei este script simples para adicionartransparent_hugepage=never
a cada kernel comgrubby
:fonte
etc/sysctl.conf
já que ela será aplicada de maneira consistente a qualquer Kernel que possa estar instalado na caixa.grub-mkconfig
como 'root' para gerar o arquivo de configuração real do grub./etc/default/grub.d/50-cloudimg-settings.cfg
arquivo em vez do/etc/default/grub
para fazê-lo funcionar./etc/rc.local
mas não está funcionando para mim. Você pode me explicar o caso raiz./etc/rc.local is executed after all the services are started
por isso precisa ser desativado no nível do kernelAqui está uma implementação usando fantoche:
fonte
Todas as opções acima não funcionaram para mim no EC2 Ubuntu 16.04, mas isso aconteceu:
fonte
Desde a linha do kernel
transparent_hugepage=never
única desativa metade do que eu preciso (ambos, para MongoDB irritante falhando / logs), que eu não persistem através desystemd
script de inicialização, mas agora têm:echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
. Isso funciona tanto no script de inicialização systemctl (quando um está configurado corretamente/etc/systemd/system
) quanto diretamente no cli como está.fonte
No caso do Redis, ele também emite um aviso que sugere desativar o THP. Porém, conforme observado no relatório de erros , em muitas distros
/etc/rc.local
é executado após os serviços e não tem efeito neles até que sejam reiniciados. Observe também que em ambientes virtualizados (por exemplo, Digitalocean), você não pode controlar as configurações do GRUB.A solução nesse caso é usar o script init dedicado para desativar grandes páginas transparentes, como sugere esta página , pelas configurações
X-Start-Before
. Por exemplo, o script init do Debian para Redis:fonte
Graças ao github e ao PyYoshi
, encontrei este exemplo para o systemd
Crie o arquivo
Coloque isso no arquivo de serviço
Para usuários debian / ubuntu
Em seguida, ative o serviço
fonte
Se você encontrar o problema
mesmo com o sudo, tente os comandos abaixo:
fonte
Aqui está um rápido hack para o Ansible (não quero gerenciar um modelo
/etc/rc.local
):fonte
No SLES11 SP3 com o carregador de inicialização YAST e GRUB, temos que adicionar
transparent_hugepage=never
[YAST-bootloader-edit-line com o parâmetro opcional do kernel]. NOTA: Essa ferramenta altera o arquivo/boot/grub/menu.lst
.Somente depois de fazer essa alteração e reiniciar resultou na desativação do THP.
fonte
Aqui está outra solução fantoche no Forge: https://forge.puppetlabs.com/ramseymcgrath/remove_hugepage/
Apenas use:
na sua definição de nó fantoche.
fonte