Na caixa, temos 38 GB de memória. Depois de definir o número de páginas enormes (2048k) para 17290, descobri que quase toda a memória foi usada. Mas não executei nenhum processo. Como isso poderia ser? Que número de páginas enormes devo definir?
Na caixa, temos 38 GB de memória. Depois de definir o número de páginas enormes (2048k) para 17290, descobri que quase toda a memória foi usada. Mas não executei nenhum processo. Como isso poderia ser? Que número de páginas enormes devo definir?
Respostas:
Você reservou quase toda a sua memória para páginas tlb enormes. Isso deixa quase nenhuma memória para armazenar dados reais. O tamanho recomendado é cerca de 1/1000 do que você definiu.
Esta pergunta é antiga, mas acho que a outra resposta está errada. Dependendo de quão grandes páginas foram alocadas exatamente, se feitas corretamente naquele momento, usando
echo 17290 > /proc/sys/vm/nr_hugepages
ou algo parecido, o que foi visto foi o comportamento pretendido e está como documentado. Não há problema em reservar o número de páginas enormes que consideramos necessárias para a carga de trabalho e que quase toda a memória livre se foi no cenário descrito também é o esperado:
Páginas que são usadas como páginas enormes são reservadas dentro do kernel e não podem ser usadas para outros fins. Páginas enormes não podem ser trocadas sob pressão de memória.
https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt
Outros fazem exatamente o mesmo:
Defina o parâmetro do kernel vm.nr_hugepages para um valor adequado. Nesse caso, decidimos usar 12 GB e configuramos o parâmetro para 6144 (6144 * 2M = 12 GB). Você pode executar: echo 6144> / proc / sys / vm / nr_hugepages
https://blog.pythian.com/performance-tuning-hugepages-in-linux/