Memória

Comandos para gerenciar a memória do Linux

Comandos para gerenciar a memória do 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 um usuário Linux.

Detecte o hardware usando dmidecode

A detecção automática de hardware sempre foi um pouco como uma loteria, mas melhorou nos últimos anos, pois muitos fabricantes documentam seus produtos com mais detalhes e também têm informações específicas disponíveis online. Para saber mais sobre as informações de hardware relacionadas à RAM instalada em sua máquina, use o dmidecode comando (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 o processador, placa de base e RAM. As informações são baseadas na Desktop Management Interface (DMI) [1], que é um framework que classifica os componentes individuais em um desktop, notebook ou servidor abstraindo esses componentes do software que os gerencia [2]. A opção --tipo de memória refere-se aos dispositivos de memória. Para outras classes DMI, dê uma olhada na página do manual do dmidecode.

# dmidecode --type memory
# dmidecode 2.12
SMBIOS 2.7 presentes.
Lidar com 0x0007, DMI tipo 16, 23 bytes
Matriz de Memória Física
Local: placa de sistema ou placa-mãe
Uso: Memória do Sistema
Tipo de correção de erro: Nenhum
Capacidade máxima: 16 GB
Identificador de informações de erro: não fornecido
Número de dispositivos: 1
Lidar com 0x0008, DMI tipo 17, 34 bytes
Dispositivo de Memória
Identificador de matriz: 0x0007
Identificador de informações de erro: não fornecido
Largura total: 64 bits
Largura de dados: 64 bits
Tamanho: 8.192 MB
Fator de forma: SODIMM
Conjunto: Nenhum
Localizador: ChannelA-DIMM0
Localizador de banco: BANK 0
Tipo: DDR3
Detalhe de tipo: 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 configurada: 1600 MHz

Esta máquina está atualmente equipada com 8G DDR3 RAM com uma velocidade de clock configurada de 1600 MHz. Como você pode ver, a capacidade máxima disponível da RAM on-board é 16G, o que significa que pode ser estendida por um segundo módulo 8G.

Informação gráfica na memória

Caso você prefira uma interface gráfica para recuperar essas informações as ferramentas Hardinfo [3] e Hardware Lister (versão GTK +) [4] podem ser do seu interesse. No Debian GNU / Linux, Ubuntu e Linux Mint, esses programas estão disponíveis por meio 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 gratuitamente comando. No Debian GNU / Linux, Ubuntu e Linux Mint, este programa é parte do pacote procps [5]. A Figura 2 mostra a saída em uma janela de terminal.

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

Na figura 3, a saída é mostrada em megabytes usando a opção -m. O sistema tem 4G de RAM, enquanto 725M estão em uso.

Informação 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 do Linux. Para mostrar esses detalhes, exiba o conteúdo do arquivo / proc / meminfo usando o gato utilitário em um terminal:

$ cat / proc / meminfo
MemTotal: 7888704 kB
MemFree: 302852 kB
Disponível na memória: 448824 kB
Buffers: 17828 kB
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
Inevisí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
SUnreclaim: 68468 kB
KernelStack: 7328 kB
Tabelas de páginas: 42844 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 20094876 kB
Committed_AS: 10344988 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 367296 kB
VmallocChunk: 34359345768 kB
Hardware corrompido: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 78448 kB
DirectMap2M: 2756608 kB
DirectMap1G: 5242880 kB
$

Para obter mais informações estatísticas sobre o uso da CPU, memória e processos, 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. Normalmente, a saída é classificada em ordem alfabética. Mas o ps o comando pode fazer muito mais. Usando as opções aux --sort -rss 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 de memória. A saída é classificada pela 6ª coluna intitulada RSS, que abrevia Resident Set Size. O valor é dado em kilobytes.

Os comandos ps, pstree e htop estão intimamente relacionados em termos das informações que essas ferramentas exibem. Ambos pstree 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 desktop com uma seleção de processos classificados por seu uso específico de memória (5ª coluna).

Encontrar processos que usam memória Swap

Quanto mais processos são iniciados, mais memória é usada ao mesmo tempo. Assim que o seu sistema Linux ficar sem páginas de memória não utilizadas, o kernel do Linux decide trocar as páginas de memória para o disco usando o método menos usado recentemente (LRU). Para responder à pergunta, quais processos usam memória swap 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 top [6]. A Figura 6 mostra essa saída em um sistema que tem muitas páginas de memória na RAM restante e não usa Swap, 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 o usuário recupera os dados completos):

# ./trocar.sh
PID = 1 - Troca usada: 0 - (systemd)
PID = 2 - Troca usada: 0 - (kthreadd)
PID = 3 - Troca usada: 0 - (ksoftirqd / 0)
PID = 5 - Troca usada: 0 - (kworker / 0: 0H)
PID = 6 - Troca usada: 0 - (kworker / u16: 0)
PID = 7 - Troca usada: 0 - (rcu_sched)
PID = 8 - Troca usada: 0 - (rcu_bh)
PID = 9 - Troca usada: 0 - (migração / 0)
PID = 10 - Troca usada: 0 - (watchdog / 0)
PID = 11 - Troca usada: 0 - (watchdog / 1)
PID = 12 - Troca usada: 0 - (migração / 1)
PID = 13 - Troca usada: 0 - (ksoftirqd / 1)
PID = 15 - Troca usada: 0 - (kworker / 1: 0H)
PID = 16 - Troca usada: 0 - (watchdog / 2)
PID = 17 - Troca usada: 0 - (migração / 2)
PID = 18 - Troca usada: 0 - (ksoftirqd / 2)
PID = 20 - Troca usada: 0 - (kworker / 2: 0H)

#

Conclusão

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

Esta é a parte 2 da série sobre 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 de memória. Isso incluirá o gerenciamento de ramdisks, bem como arquivos de swap compactados.

Links e referências

Linux Memory Management Series

Reconhecimentos

O autor gostaria de agradecer a Mandy Neumeyer e Gerold Rupprecht por seu apoio durante a preparação deste artigo.

O cursor pula ou se move aleatoriamente enquanto digita no Windows 10
Se você descobrir que o cursor do mouse pula ou se move por conta própria, de forma automática e aleatória ao digitar em um laptop ou computador com W...
Como reverter a direção de rolagem do Mouse e Touchpads no Windows 10
Mouse e Touchpads não apenas torna a computação mais fácil, mas mais eficiente e menos demorada. Não podemos imaginar uma vida sem esses dispositivos,...
Como alterar o ponteiro do mouse e tamanho do cursor, cor e esquema no Windows 10
O ponteiro do mouse e o cursor no Windows 10 são aspectos muito importantes do sistema operacional. Isso também pode ser dito para outros sistemas ope...