Estou tentando seguir instruções da documentação do MongoDB para configurar o LTH corretamente para uma máquina executando MongoDB.
Uma das instruções consiste em criar um script que é executado na inicialização. Infelizmente, nem o script sugerido, nem o código semelhante reescrito como um serviço systemd funciona.
Ao depurar o problema, encontrei outro. Quando executo:
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
o comando parece ser executado com sucesso, mas o arquivo permanece inalterado, então se eu executar:
root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled
ele retorna o conteúdo original:
always madvise [never]
Tentei modificar o arquivo com vim
; ao tentar salvar o arquivo, ele reclama que o Fsync falhou . Embora este erro tenha sido documentado , no meu caso, há espaço em disco suficiente em /
(20% usado , 7 GB disponíveis.)
Eu executo o comando no modo sudo
e as permissões do arquivo parecem corretas:
-rw-r--r-- 1 root root 4096 ...
O /sys
o diretório não está montado no modo somente leitura , conforme mostrado por:
root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
O que está acontecendo aqui?
Resposta
sysfs
, o sistema de arquivos geralmente montado em /sys
, é um sistema de arquivos virtual especial para fazer interface com o kernel do Linux.
Os arquivos nele não estão” t arquivos reais, eles representam estruturas de dados no kernel e suportam apenas métodos de acesso bastante simples. A leitura desse arquivo pede informações ao kernel. Gravar nesse arquivo instrui o kernel a alterar uma configuração ou executar uma ação.
É por isso que vim
falha. Ele tenta acessar os arquivos virtuais em formas otimizadas para arquivos reais e isso não é “suportado em sysfs
.
Seu primeiro comando
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
já foi bem-sucedido!
Muitos “arquivos” sysfs, incluindo /sys/kernel/mm/transparent_hugepage/enabled
, não imprimem apenas a configuração atual quando lidos, mas imprimem todos os possíveis modos e use colchetes para descrever qual dos vários modos está ativo.
No seu caso, never
está entre colchetes, então o modo que você tentou ativar com echo
já está ativo:
always madvise [never]
Se você “estiver interessado em como sysfs
funciona, você pode ler mais sobre isso na Wikipedia ou na documentação do kernel do Linux .