Como verificar se as hugepages do kernel estão habilitadas no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se as hugepages do kernel estão habilitadas e configuradas em um sistema Linux. Hugepages são um recurso do kernel que pode melhorar o desempenho de aplicações intensivas em memória, utilizando páginas de memória maiores.

Através de uma série de passos práticos, você explorará diferentes métodos para verificar as configurações de hugepage. Você começará examinando o arquivo /proc/meminfo para visualizar as estatísticas atuais de hugepage, incluindo o total, livre e reservado de hugepages, bem como o tamanho da hugepage. Em seguida, você usará o comando sysctl para verificar o parâmetro do kernel vm.nr_hugepages, que indica o número desejado de hugepages. Finalmente, você inspecionará o diretório /sys/kernel/mm para obter mais informações sobre a configuração de hugepage dentro do subsistema de gerenciamento de memória do kernel. Ao completar esses passos, você obterá uma sólida compreensão de como determinar o status das hugepages em seu sistema Linux.

Verificar hugepages em /proc/meminfo

Neste passo, exploraremos como verificar a configuração atual de hugepages em seu sistema Linux. Hugepages são um recurso do kernel Linux que permite ao sistema usar páginas de memória maiores do que o tamanho padrão de 4KB. Isso pode melhorar o desempenho de aplicações que usam grandes quantidades de memória, como bancos de dados e software de virtualização.

Podemos encontrar informações sobre hugepages no arquivo /proc/meminfo. Este arquivo contém várias estatísticas relacionadas à memória do sistema.

Abra o terminal, se ainda não o fez. Você pode fazer isso clicando no ícone Xfce Terminal no lado esquerdo da área de trabalho.

Agora, vamos visualizar o conteúdo de /proc/meminfo usando o comando cat. O comando cat é usado para exibir o conteúdo de arquivos.

Digite o seguinte comando em seu terminal e pressione Enter:

cat /proc/meminfo

Este comando imprimirá todo o conteúdo do arquivo /proc/meminfo em seu terminal. Você verá muitas informações sobre a memória do seu sistema.

Para procurar especificamente informações sobre hugepages, podemos usar o comando grep para filtrar a saída de cat. O comando grep procura linhas que correspondam a um padrão específico.

Digite o seguinte comando e pressione Enter:

cat /proc/meminfo | grep HugePages

O símbolo | é chamado de pipe (tubo). Ele pega a saída do comando à esquerda (cat /proc/meminfo) e a envia como entrada para o comando à direita (grep HugePages). Desta forma, grep só pesquisa dentro da saída de cat.

Você deve ver linhas semelhantes a estas (os números exatos podem variar):

HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

Vamos detalhar o que essas linhas significam:

  • HugePages_Total: O número total de hugepages configuradas no sistema.
  • HugePages_Free: O número de hugepages que estão atualmente livres e disponíveis para uso.
  • HugePages_Rsvd: O número de hugepages que estão reservadas para uso futuro.
  • HugePages_Surp: O número de hugepages que estão acima da configuração vm.nr_hugepages (veremos isso no próximo passo).
  • Hugepagesize: O tamanho de cada hugepage. Na maioria dos sistemas, este é 2048 kB (2MB).

Neste ambiente, o padrão provavelmente é 0 hugepages no total, o que é comum para sistemas de uso geral.

Clique em Continuar para prosseguir para o próximo passo.

Verificar as configurações de hugepage com sysctl vm.nr_hugepages

No passo anterior, analisamos /proc/meminfo para ver o uso atual de hugepage. Agora, vamos usar o comando sysctl para verificar o parâmetro do kernel que controla o número total de hugepages.

O comando sysctl é usado para visualizar e modificar parâmetros do kernel em tempo de execução. Parâmetros do kernel são configurações que afetam o comportamento do kernel Linux.

O parâmetro específico em que estamos interessados é vm.nr_hugepages. Este parâmetro determina o número total de hugepages que o kernel deve reservar.

Digite o seguinte comando em seu terminal e pressione Enter:

sysctl vm.nr_hugepages

Este comando exibirá o valor atual do parâmetro do kernel vm.nr_hugepages.

Você deve ver uma saída semelhante a esta:

vm.nr_hugepages = 0

Esta saída confirma que a configuração atual para o número total de hugepages é 0. Isso corresponde ao que vimos em /proc/meminfo, onde HugePages_Total também era 0.

O comando sysctl é uma ferramenta poderosa para inspecionar e alterar muitos aspectos do comportamento do kernel. Embora estejamos apenas analisando vm.nr_hugepages aqui, você pode explorar muitos outros parâmetros usando sysctl -a.

Compreender parâmetros do kernel como vm.nr_hugepages é importante para ajustar o desempenho do sistema para cargas de trabalho específicas.

Clique em Continuar para passar para o próximo passo.

Inspecionar a configuração de hugepage em /sys/kernel/mm

Neste passo final, exploraremos outro local onde as informações de configuração de hugepage estão disponíveis: o sistema de arquivos /sys. O sistema de arquivos /sys fornece uma interface para as estruturas de dados do kernel, permitindo que inspecionemos e, às vezes, modifiquemos objetos do kernel.

Informações relacionadas a hugepage podem ser encontradas em /sys/kernel/mm/transparent_hugepage. Transparent Hugepages (THP) é um recurso que tenta usar automaticamente hugepages sem exigir configuração explícita de aplicações.

Vamos navegar para este diretório usando o comando cd. cd significa "change directory" (mudar diretório).

Digite o seguinte comando e pressione Enter:

cd /sys/kernel/mm/transparent_hugepage

Agora que estamos no diretório /sys/kernel/mm/transparent_hugepage, vamos listar os arquivos neste diretório usando o comando ls. O comando ls lista o conteúdo de um diretório.

Digite o seguinte comando e pressione Enter:

ls

Você deve ver uma saída semelhante a esta:

defrag  enabled  khugepaged  numa_defrag  shmem_enabled  split_huge_pmd_size  split_huge_pte_size

Esses arquivos representam diferentes opções de configuração e indicadores de status para Transparent Hugepages.

Vamos analisar o conteúdo do arquivo enabled usando o comando cat. Este arquivo mostra se Transparent Hugepages estão habilitados, desabilitados ou em um modo 'madvise' (onde as aplicações podem aconselhar o kernel sobre o uso de hugepage).

Digite o seguinte comando e pressione Enter:

cat enabled

Você deve ver uma saída semelhante a esta:

[always] madvise never

A saída indica a configuração atual. [always] significa que THP está atualmente habilitado para todos os mapeamentos.

Agora, vamos analisar o arquivo defrag. Este arquivo controla se o kernel deve tentar desfragmentar a memória para disponibilizar hugepages.

Digite o seguinte comando e pressione Enter:

cat defrag

Você deve ver uma saída semelhante a esta:

[always] defer defer+madvise madvise never

Novamente, [always] indica a configuração atual para a desfragmentação de memória relacionada ao THP.

O sistema de arquivos /sys é um recurso valioso para entender o estado interno e a configuração do kernel. Explorar diretórios como /sys/kernel/mm pode fornecer informações detalhadas sobre o gerenciamento de memória.

Você agora explorou com sucesso as informações de hugepage usando três métodos diferentes: /proc/meminfo, sysctl e o sistema de arquivos /sys.

Clique em Continuar para concluir o laboratório.

Resumo

Neste laboratório, aprendemos como verificar se as hugepages do kernel estão habilitadas e configuradas em um sistema Linux. Exploramos três métodos para alcançar isso. Primeiro, examinamos o arquivo /proc/meminfo usando cat e grep para visualizar estatísticas-chave de hugepage, como HugePages_Total, HugePages_Free e Hugepagesize.

Em seguida, normalmente verificaríamos as configurações de hugepage usando sysctl vm.nr_hugepages e inspecionaríamos a configuração de hugepage dentro do diretório /sys/kernel/mm, embora as etapas detalhadas para esses métodos não tenham sido totalmente fornecidas no conteúdo apresentado. Essas etapas demonstram coletivamente como determinar o estado atual e a configuração das hugepages em um sistema Linux.