Como verificar se o overcommit do kernel está habilitado no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar a configuração de overcommit (sobrecarga) de memória virtual no Linux. Você usará o comando sysctl para visualizar o parâmetro do kernel vm.overcommit_memory e entender seus diferentes valores.

Você também explorará o sistema de arquivos /proc, especificamente o diretório /proc/sys/vm, para ver como os parâmetros do kernel são expostos como arquivos. Finalmente, você inspecionará o arquivo /etc/sysctl.conf para ver como essas configurações podem ser configuradas de forma persistente. Este laboratório fornecerá uma compreensão prática de como verificar e entender as configurações de overcommit do kernel em um ambiente Linux.

Verificar overcommit com sysctl vm.overcommit

Nesta etapa, você aprenderá como verificar a configuração de overcommit de memória virtual no Linux usando o comando sysctl.

O overcommit de memória virtual é um recurso no Linux que permite ao sistema alocar mais memória para os processos do que a fisicamente disponível. Isso pode ser benéfico em alguns casos, mas também pode levar a problemas se os processos realmente tentarem usar toda a memória que lhes foi alocada.

O comando sysctl é usado para visualizar e modificar os parâmetros do kernel em tempo de execução. Nós o usaremos para verificar o valor do parâmetro vm.overcommit_memory.

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, digite o seguinte comando no terminal e pressione Enter:

sysctl vm.overcommit_memory

Este comando solicita ao kernel que mostre o valor atual do parâmetro vm.overcommit_memory.

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

vm.overcommit_memory = 0

O valor 0 indica o tratamento heurístico padrão de overcommit. Outros valores possíveis são 1 (sempre overcommit) e 2 (nunca overcommit). Entender essa configuração é importante para o desempenho e a estabilidade do sistema, especialmente em ambientes com alta demanda de memória.

Clique em Continuar para prosseguir para a próxima etapa.

Verificar configurações em /proc/sys/vm

Nesta etapa, você explorará o sistema de arquivos /proc, especificamente o diretório /proc/sys/vm, para ver como os parâmetros do kernel relacionados à memória virtual são expostos.

O sistema de arquivos /proc é um sistema de arquivos virtual que fornece informações sobre processos e outras informações do sistema. É um ótimo lugar para inspecionar o estado atual do kernel. O diretório /proc/sys dentro de /proc contém arquivos que correspondem aos parâmetros do kernel que podem ser visualizados e, às vezes, modificados em tempo de execução.

O diretório /proc/sys/vm contém arquivos relacionados ao subsistema de memória virtual. O parâmetro vm.overcommit_memory que verificamos na etapa anterior tem um arquivo correspondente neste diretório.

Vamos usar o comando cat para visualizar o conteúdo do arquivo que representa vm.overcommit_memory. O comando cat é usado para exibir o conteúdo dos arquivos.

Digite o seguinte comando em seu terminal e pressione Enter:

cat /proc/sys/vm/overcommit_memory

Este comando lerá o conteúdo do arquivo overcommit_memory localizado em /proc/sys/vm e o imprimirá em seu terminal.

Você deve ver o mesmo valor que viu com o comando sysctl na etapa anterior:

0

Isso demonstra que sysctl está essencialmente lendo ou escrevendo nesses arquivos no sistema de arquivos /proc/sys.

Você também pode listar os arquivos no diretório /proc/sys/vm para ver outros parâmetros relacionados à memória virtual. Use o comando ls:

ls /proc/sys/vm/

Você verá uma lista de arquivos, cada um representando um parâmetro diferente do kernel relacionado à memória virtual.

compact_hueristic
compact_memory
dirty_background_bytes
dirty_background_ratio
dirty_bytes
dirty_expire_centisecs
dirty_ratio
dirty_writeback_centisecs
drop_caches
extfrag_threshold
hugetlb_shm_group
laptop_mode
lowmem_reserve_ratio
min_free_bytes
min_slab_ratio
min_unmapped_ratio
mmap_min_addr
nr_hugepages
nr_hugepages_mempolicy
nr_overcommit_hugepages
numa_balancing
numa_balancing_scan_period_max_ms
numa_balancing_scan_period_min_ms
numa_balancing_scan_size_mb
numa_balancing_settle_count
numa_balancing_timeout
oom_dump_tasks
oom_kill_allocating_task
overcommit_memory
overcommit_ratio
page-cluster
panic_on_oom
percpu_pagelist_fraction
stat_interval
swappiness
user_reserve_kbytes
vfs_cache_pressure
watermark_boost_factor
watermark_scale_factor
zone_reclaim_mode

Isso lhe dá uma visão dos muitos parâmetros ajustáveis disponíveis no subsistema de memória virtual do kernel Linux.

Clique em Continuar para prosseguir.

Inspecionar configuração com cat /etc/sysctl.conf

Nesta etapa, você aprenderá sobre o arquivo /etc/sysctl.conf, que é usado para configurar os parâmetros do kernel de forma persistente em todas as reinicializações.

Embora você possa alterar os parâmetros do kernel em tempo de execução usando o comando sysctl ou escrevendo em arquivos em /proc/sys, essas alterações geralmente são temporárias e serão perdidas quando o sistema for reiniciado. Para tornar as alterações nos parâmetros do kernel permanentes, você normalmente as adiciona ao arquivo /etc/sysctl.conf ou aos arquivos no diretório /etc/sysctl.d/.

Quando o sistema inicializa, ele lê as configurações de /etc/sysctl.conf e as aplica.

Vamos usar o comando cat novamente para visualizar o conteúdo do arquivo /etc/sysctl.conf.

Digite o seguinte comando em seu terminal e pressione Enter:

cat /etc/sysctl.conf

Isso exibirá o conteúdo do arquivo de configuração principal do sysctl.

Você pode ver linhas começando com #, que são comentários e são ignoradas. Outras linhas estarão no formato parâmetro = valor, semelhante ao que você viu com a saída do comando sysctl.

#
## /etc/sysctl.conf - Arquivo de configuração para definir variáveis do sistema
## Veja os arquivos /etc/sysctl.d/ .conf para outras variáveis do sistema
#

#kernel.domainname = example.com

## Descomente o seguinte para parar mensagens de baixo nível no console
#kernel.printk = 3 4 1 3

##############################################################3
## Funções encontradas anteriormente em netbase
#

## Descomente as duas linhas a seguir para habilitar a proteção contra ataques de Spoofing
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

## Descomente a próxima linha para habilitar cookies TCP/IP SYN
#net.ipv4.tcp_syncookies=1

## Descomente a próxima linha para habilitar o encaminhamento de pacotes para IPv4
#net.ipv4.ip_forward=1

## Descomente a próxima linha para habilitar o encaminhamento de pacotes para IPv6
#net.ipv6.conf.all.forwarding=1

##############################################################3
## Eliminar ninguém no kernel
#

#kernel.yama.ptrace_scope = 1

##############################################################3
## Chave mágica de solicitação do sistema
#

#kernel.sysrq = 176

##############################################################3
## Memória compartilhada dinâmica:
#

#kernel.shmmax = 4294967295
#kernel.shmall = 268435456

##############################################################3
## Outras configurações
#

#fs.file-max = 100000

#vm.swappiness = 60
#vm.vfs_cache_pressure = 50

#kernel.nmi_watchdog = 0

Observe que o parâmetro vm.overcommit_memory pode não estar explicitamente definido neste arquivo. Se um parâmetro não estiver definido em /etc/sysctl.conf ou /etc/sysctl.d/, o kernel usará seu valor padrão. O valor que você viu com o comando sysctl e em /proc/sys/vm/overcommit_memory é o valor atualmente ativo, que pode ser o padrão ou definido por outro arquivo de configuração ou script durante a inicialização.

Entender /etc/sysctl.conf é crucial para o ajuste persistente do sistema.

Clique em Continuar para finalizar este laboratório.

Resumo

Neste laboratório, você aprendeu como verificar a configuração de overcommit de memória virtual no Linux. Você usou o comando sysctl vm.overcommit_memory para visualizar o valor atual deste parâmetro do kernel, entendendo que um valor de 0 indica o tratamento heurístico padrão, 1 significa sempre overcommit e 2 significa nunca overcommit.

Você também explorou o sistema de arquivos /proc, especificamente o diretório /proc/sys/vm, para ver como os parâmetros do kernel, como vm.overcommit_memory, são expostos como arquivos dentro deste sistema de arquivos virtual, fornecendo uma maneira alternativa de inspecionar o estado atual do kernel em relação às configurações de memória virtual.