Comandos para gerenciar a memória Linux

Comandos para gerenciar a memória Linux
Os sistemas Unix/Linux contêm uma ferramenta de linha de comando para quase tudo. Isso inclui também programas para lidar com a memória. Neste artigo, mostramos uma seleção de comandos que são bastante úteis para você como usuário do Linux.

Detecte o hardware usando DMIDecode

A detecção automática de hardware sempre foi um pouco como uma loteria, mas ficou melhor nos últimos anos, pois muitos fabricantes documentam seus produtos com mais detalhes e têm informações específicas disponíveis online. Para descobrir as informações de hardware sobre a RAM instalada em sua máquina, use o DMIDECODE Command (pacote para Debian GNU/Linux, Ubuntu e Linux Mint: DMIDecode).

Entre outras informações, esta ferramenta relata dados detalhados sobre os componentes do sistema instalados como processador, rodapé e RAM. As informações são baseadas na interface de gerenciamento de desktop (DMI) [1], que é uma estrutura que classifica os componentes únicos em uma área de trabalho, notebook ou servidor, abstraindo esses componentes do software que os gerencia [2]. A opção --Digite memória refere -se aos dispositivos de memória. Para outras aulas de DMI, dê uma olhada na página manual de DMIDECODE.

# dmidecode -Memória
# dmidecode 2.12
SMBIOS 2.7 presente.
Manuseie 0x0007, DMI tipo 16, 23 bytes
Matriz de memória física
Localização: placa do sistema ou placa -mãe
Uso: Memória do sistema
Tipo de correção de erro: nenhum
Capacidade máxima: 16 GB
INFORMAÇÃO DE ERRO DIREITO: Não fornecido
Número de dispositivos: 1
Manuseie 0x0008, DMI tipo 17, 34 bytes
Dispositivo de memória
Identificador de matriz: 0x0007
INFORMAÇÃO DE ERRO DIREITO: Não fornecido
Largura total: 64 bits
Largura dos dados: 64 bits
Tamanho: 8192 MB
Fator de forma: SODIMM
Conjunto: Nenhum
Localizador: Channel-Dimm0
Localizador de banco: Banco 0
Tipo: ddr3
Tipo Detalhe: Síncrono
Velocidade: 1600 MHz
Fabricante: Samsung
Número de série: 25252105
Tag de ativo: nenhum
Número da peça: M471B1G73DB0-YK0
Classificação: Desconhecido
Velocidade do relógio configurado: 1600 MHz

Atualmente, esta máquina está equipada com 8G DDR3 RAM com uma velocidade de relógio configurada de 1600 MHz. Como você pode ver, a capacidade máxima disponível da RAM a bordo é 16G, o que significa que pode ser estendido por um segundo módulo 8G.

Informações gráficas sobre memória

Caso você prefira uma interface gráfica para recuperar essas informações, as ferramentas hardinfo [3] e o hardware lister (versão gtk+) [4] podem ser de interesse para você. No Debian GNU/Linux, Ubuntu e Linux Mint, esses programas estão disponíveis através dos pacotes Hardinfo e LSHW-GTK. A Figura 2 mostra a interface do usuário do Hardinfo exibindo as informações de memória em uma instalação do Xubuntu.

Quanta memória está disponível atualmente

As vezes menos é mais. Na linha de comando, as informações sobre a memória estão disponíveis através do livre comando. No Debian GNU/Linux, Ubuntu e Linux Mint, este programa faz parte do pacote PROCPS [5]. A Figura 2 mostra a saída em uma janela de terminal.

Como uma seleção das opções adicionais, livre aceita vários parâmetros como:

  • -b (-bytes): Mostre a saída como bytes
  • -K (--kilo): Mostre a produção como Kilobytes
  • -m (--mega): Mostre a saída como megabytes
  • -G (--giga): Mostre a saída como gigabytes
  • --Tera: Mostre a saída como terabytes
  • -H (-humano): Mostre a saída em formato legível pelo homem

Na Figura 3, a saída é mostrada em megabytes usando a opção -m. O sistema possui 4g de RAM, enquanto 725m estão atualmente em uso.

Informações de memória do ponto de vista do kernel Linux

As ferramentas mencionadas acima dependem de informações brutas que são mantidas no sistema de arquivos PROC do kernel Linux. Para mostrar esses detalhes, emitir o conteúdo do arquivo /proc/meminfo usando o gato utilidade em um terminal:

$ cat /proc /meminfo
Memtotal: 7888704 KB
MEMFREE: 302852 KB
Memavailable: 448824 KB
Buffers: 17828 KB
Armazenado em cache: 326104 kb
Swapcached: 69592 KB
Ativo: 2497184 KB
Inativo: 650912 KB
Ativo (ANON): 2338748 KB
Inativo (ANON): 525316 KB
Ativo (Arquivo): 158436 KB
Inativo (arquivo): 125596 kb
Inevitável: 64 KB
Mlocked: 64 KB
Swaptotal: 16150524 KB
SwapFree: 15668480 KB
Sujo: 3008 kb
Writeback: 0 KB
AnonPages: 2774656 KB
Mapeado: 4414752 KB
SHMEM: 59900 KB
Laje: 130216 kb
Sreclaimable: 61748 KB
Sun -Reclaim: 68468 KB
KernelStack: 7328 KB
Pagetables: 42844 KB
Nfs_unstable: 0 kb
Salto: 0 kb
Writebacktmp: 0 kb
CommitLimit: 20094876 KB
Committ_as: 10344988 KB
Vmalloctotal: 34359738367 KB
Vmallocused: 367296 KB
VMallocChunk: 34359345768 KB
Hardwarecorrupd: 0 KB
AnonhugePages: 0 KB
EnormePages_total: 0
EnormePages_free: 0
EnurdPages_rsvd: 0
Enormepages_surp: 0
EnormePagesize: 2048 KB
DirectMap4K: 78448 KB
DirectMap2m: 2756608 KB
DirectMap1g: 5242880 KB
$

Para obter mais informações estatísticas sobre o uso, memória e processos da CPU, você pode dar uma olhada nas ferramentas vmstat, e iostat (Pacotes Debian Procps e Sysstat).

Trabalhando com processos - PS, HTOP e PSTree

Para mostrar os processos ativos do seu sistema Linux, use o ps comando. Geralmente, a saída é classificada em ordem alfabética. Mas o ps O comando pode fazer muito mais. Usando as opções auxiliares --classificar -rs A saída da lista de processos é classificada pelo uso de memória em uma ordem de cima para baixo. A Figura 4 mostra os processos que têm a maior demanda na memória. A saída é classificada pela 6ª coluna intitulada RSS, que abrevia o tamanho do conjunto de residentes. O valor é dado em Kilobytes.

Os comandos PS, PSTEE e htop estão intimamente relacionados em termos das informações que essas ferramentas exibem. Ambos PSTEE e htop exibir um gráfico para visualizar as dependências do processo. htop Atua como uma versão interativa que permite rolar a lista de processos para cima e para baixo. A Figura 5 mostra htop Em um sistema de desktop com uma seleção de processos classificados pelo uso específico da memória (5ª coluna).

Encontrar processos que usam memória de troca

Quanto mais processos forem lançados, mais memória estiver em uso ao mesmo tempo. Assim que seu sistema Linux ficar sem páginas de memória não utilizadas, o kernel Linux decide trocar as páginas de memória para disco usando o método menos recentemente usado (LRU). Para responder à pergunta, quais processos usam a memória de troca e quanto é usado em particular, você pode dar uma olhada na saída do programa superior. Em 2016, Erik Ljungstrom publicou uma breve descrição de como recuperar essas informações e estender esta coluna para a saída do topo [6]. A Figura 6 mostra essa saída em um sistema que tem muitas páginas de memória na RAM à esquerda e não usa troca, atualmente.

Além disso, em 2011, ele já publicou um script bash que avalia as informações do sistema de arquivos PROC para exibir o uso do processo de troca por processo [7]. Mesmo 7 anos depois e já descrito como obsoleto, o script ainda é excelente e mostra como automatizar tarefas em um sistema Linux. É por isso que temos certeza de que é útil mostrá -lo aqui mais uma vez.

A saída do script é a seguinte (execute como raiz Usuário a recuperar os dados completos):

# ./trocar.sh
PID = 1 - Swap Usado: 0 - (Systemd)
PID = 2 - Swap Usado: 0 - (Kthreadd)
PID = 3 - Swap Usado: 0 - (KSOFTIRQD/0)
PID = 5 - Swap Usado: 0 - (KWorker/0: 0H)
PID = 6 - Swap Usado: 0 - (KWorker/U16: 0)
PID = 7 - Swap Usado: 0 - (RCU_SCHED)
PID = 8 - Swap Usado: 0 - (RCU_BH)
PID = 9 - Swap Usado: 0 - (Migração/0)
PID = 10 - Swap Usado: 0 - (Watchdog/0)
PID = 11 - Swap Usado: 0 - (Watchdog/1)
PID = 12 - Swap Usado: 0 - (Migração/1)
PID = 13 - Swap Usado: 0 - (KSOFTIRQD/1)
PID = 15 - Swap Usado: 0 - (KWorker/1: 0H)
PID = 16 - Swap Usado: 0 - (Watchdog/2)
PID = 17 - Swap Usado: 0 - (Migração/2)
PID = 18 - Swap Usado: 0 - (KSOFTIRQD/2)
PID = 20 - Swap Usado: 0 - (KWorker/2: 0H)
..
#

Conclusão

A caixa de ferramentas Linux contém uma lista infinita de programas disponíveis para ajudá -lo a analisar o uso de memória do seu sistema Linux. Acabamos de dar uma olhada curta - de dados brutos a informações pré -processadas - tudo isso está lá. Apenas conheça suas ferramentas. Para se familiarizar com eles, demore um pouco e brinque com eles.

Esta é a Parte 2 da série no Linux Kernel Memory Management. A parte 1 discute a memória de troca, na parte três desta série, discutiremos como otimizar o uso da memória. Isso incluirá o gerenciamento de ramdisks, bem como arquivos de troca compactados.

Links e referências

  • [1] DMI na Força -Tarefa de Gerenciamento Distribuído (DMTF)
  • [2] DMI na Wikipedia
  • [3] Hardinfo
  • [4] LSHW-GTK (Pacote Debian for Stretch)
  • [5] Procps (Pacote Debian for Stretch)
  • [6] Erik Ljungstrom: Descubra o que está usando sua troca
  • [7] Erik Ljungstrom: Uso de troca - 5 anos depois

Série de gerenciamento de memória Linux

  • Parte 1: Linux Kernel Memory Management: Swap Space
  • Parte 2: Comandos para gerenciar a memória Linux
  • Parte 3: Otimizando o uso da memória do Linux

Reconhecimentos

O autor gostaria de agradecer a Mandy Neumeyer e Gerold Ruprecht pelo apoio ao preparar este artigo.