No linux, existem comandos para quase tudo, porque a GUI (graphical user interface) pode nem sempre estar disponível.
Ao trabalhar em servidores, se apenas o acesso ao shell estiver disponível, tudo pode ser consultado com esses comandos.
É sempre importante verificar a memória para que os recursos não se esgotem e prevenir que os usuários sejam impedidos de acessar o servidor.
Por exemplo, se você estiver executando um servidor da Web, o servidor precisa ter memória suficiente para atender os visitantes do site.
Caso contrário, o site ficaria muito lento ou até mesmo pode cair quando houver um pico de tráfego, simplesmente porque a memória seria insuficiente.
Mas se você quiser aprofundar-se no Linux, recomendo este curso! Do básico ao avançado, por apenas R$ 147,00, com mais de 372 aulas em vídeo, tira dúvidas com o instrutor e Certificado de conclusão!
Confira abaixo os comandos que podem ser usados para verificar o uso de memória em um sistema Linux.
ÍNDICE DE CONTEÚDO
1. Comando free
O comando free é o comando mais simples e fácil de usar para verificar o uso da memória no linux. Aqui está um exemplo rápido:
total used free shared buff/cache available
Mem: 2052240 863076 375588 278268 813576 701212
Swap: 0 0 0
A opção –m exibe todos os dados em MBs. O total de 7976 MB é a quantidade total de RAM instalada no sistema, ou seja, 8 GB.
A coluna usada mostra a quantidade de RAM que foi usada pelo Linux, neste caso em torno de 6,4 GB. A saída é bastante auto-explicativa.
O problema aqui é a coluna em cache e buffers. A segunda linha informa que 4,6 GB são gratuitos.
Essa é a memória livre na primeira linha adicionada com os buffers e a quantidade de memória em cache.
O Linux tem o hábito de armazenar muitas coisas em cache para obter um desempenho mais rápido, para que a memória possa ser liberada e usada, se necessário.
A última linha é a memória de troca, que neste caso está totalmente livre.
Aqui está o que cada coluna significa:
- total – este número representa a quantidade total de memória que pode ser usada pelos aplicativos.
- used – memória usada. É calculado como: used = total – free – buffers – cache
- free – Memória livre / não utilizada.
- shared – esta coluna pode ser ignorada porque não tem significado. Ele está aqui apenas para compatibilidade com versões anteriores.
- buff / cache – A memória combinada usada pelos buffers do kernel e cache de página e blocos. Esta memória pode ser recuperada a qualquer momento se necessário pelos aplicativos. Se quiser que os buffers e o cache sejam exibidos em duas colunas separadas, use a opção -w .
- available– Uma estimativa da quantidade de memória disponível para iniciar novos aplicativos, sem troca.
Por padrão, o comando free mostra as informações da memória em kibibyte. Para visualizar as informações em formato legível (geralmente megabytes e gigabytes), use a opção -h :
free -h
total used free shared buff/cache available
Mem: 2.0G 1.0G 138M 278M 820M 476M
Swap: 0B 0B 0B
2. Arquivo /proc/meminfo
A próxima maneira de verificar o uso da memória é ler o arquivo /proc/meminfo. Saiba que o sistema de arquivos / proc não contém arquivos reais.
São arquivos virtuais que contêm informações dinâmicas sobre o kernel e o sistema.
# cat /proc/meminfo
MemTotal: 1882064 kB
MemFree: 1376380 kB
MemAvailable: 1535676 kB
Buffers: 2088 kB
Cached: 292324 kB
SwapCached: 0 kB
Active: 152944 kB
Inactive: 252628 kB
Active(anon): 111328 kB
Inactive(anon): 16508 kB
Active(file): 41616 kB
Inactive(file): 236120 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 40 kB
Writeback: 0 kB
AnonPages: 111180 kB
Mapped: 56396 kB
Shmem: 16676 kB
Slab: 54508 kB
SReclaimable: 25456 kB
SUnreclaim: 29052 kB
KernelStack: 2608 kB
PageTables: 5056 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 3038180 kB
Committed_AS: 577664 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 14664 kB
VmallocChunk: 34359717628 kB
HardwareCorrupted: 0 kB
AnonHugePages: 24576 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 69632 kB
DirectMap2M: 2027520 kB
Verifique os valores de MemTotal, MemFree, Buffers, em cache, SwapTotal, Swap Free.
Eles indicam os mesmos valores de uso de memória que o comando free.
Estatísticas de alto nível do /proc/meminfo
- MemTotal : RAM total utilizável (ou seja, ram física menos alguns bits reservados e o código binário do kernel)
- MemFree : É a soma de LowFree + HighFree (estatística geral)
- MemShared : 0; está aqui por razões de compatibilidade, mas sempre zero.
- Buffers : Memória no cache do buffer. quase inútil como métrica hoje em dia O armazenamento relativamente temporário para blocos de disco não deve ficar tremendamente grande (20 MB ou mais)
- Em cache : memória no pagecache (diskcache) menos SwapCache, não inclui SwapCached
- SwapCache : Memória que uma vez foi trocada, é trocada de volta, mas ainda está no arquivo de troca (se a memória for necessária, ela não precisa ser trocada NOVAMENTE porque já está no arquivo de troca. Isso economiza E / S)
Estatísticas detalhadas do /proc/meminfo:
1. VM Statistics
VM divide as páginas de cache em memória “ativa” e “inativa”. A ideia é que se você precisa de memória e algum cache precisa ser sacrificado para isso, você o retira de inativo, pois espera-se que ele não seja usado. O vm verifica o que é usado regularmente e movimenta as coisas.
As estatísticas são:
- Ativo : memória que foi usada mais recentemente e geralmente não recuperada, a menos que seja absolutamente necessário.
- Inact_dirty : Dirty significa “pode ser necessário gravar no disco ou trocar”. Dá mais trabalho para liberar. Os exemplos podem ser arquivos que ainda não foram gravados. Eles não são gravados na memória muito cedo para manter o I / O baixo. Por exemplo, se você estiver gravando logs, pode ser melhor esperar até ter um log completo pronto antes de enviá-lo para o disco.
- Inact_clean : Presume -se que seja facilmente liberável . O kernel tentará manter algumas coisas limpas sempre para ter um pouco de espaço para respirar.
- Inact_target : apenas uma métrica de meta que o kernel usa para garantir que haja páginas inativas suficientes ao redor. Quando excedido, o kernel não funcionará para mover as páginas de ativas para inativas. Uma página também pode ficar inativa de algumas outras maneiras, por exemplo, se você fizer uma longa E / S sequencial, o kernel assume que você não vai usar essa memória e a torna inativa preventivamente. Portanto, você pode obter mais páginas inativas do que o destino porque o kernel marca algum cache como “mais provável de nunca ser usado” e permite que ele trapaceie na ordem de “última utilização”.
2. Estatísticas de memória
- HighTotal : é a quantidade total de memória na região alta. Highmem é toda a memória acima de (aproximadamente) 860 MB de RAM física. Kernel usa truques indiretos para acessar a região de alta memória. O cache de dados pode ficar nesta região da memória.
- LowTotal : a quantidade total de memória não alta.
- LowFree : A quantidade de memória livre da região de pouca memória. Esta é a memória que o kernel pode endereçar diretamente. Todas as estruturas de dados do kernel precisam ficar com pouca memória.
- SwapTotal : Quantidade total de memória swap física.
- SwapFree : Quantidade total de memória swap livre. Memória que foi removida da RAM e está temporariamente no disco
- Suja : memória que está esperando para ser gravada de volta no disco
- Writeback : Memória que está ativamente sendo gravada de volta no disco
- Mapeados : arquivos que foram mapeados, como bibliotecas
- Slab : cache de estruturas de dados no kernel
- Committed_AS : uma estimativa de quanta RAM você precisaria para ter uma garantia de 99,99% de que nunca haverá OOM (sem memória) para esta carga de trabalho. Normalmente, o kernel compromete a memória. Isso significa que, digamos que você faça um malloc de 1 GB, nada acontece, realmente. Somente quando você começar a USAR aquela memória malloc, você obterá memória real sob demanda, e tanto quanto você usa. Então você meio que faz uma hipoteca e espera que o banco não vá à falência. Outros casos podem incluir quando você faz o mapeamento de um arquivo que é compartilhado apenas quando você grava nele e obtém uma cópia privada desses dados. Embora normalmente seja compartilhado entre os processos. O Committed_AS é uma estimativa de quanta RAM / swap você precisaria no pior caso.
- PageTables : quantidade de memória dedicada ao nível mais baixo de tabelas de páginas.
- ReverseMaps : número de mapeamentos reversos realizados
- VmallocTotal : tamanho total da área de memória vmalloc
- VmallocUsed : quantidade de área vmalloc que é usada
- VmallocChunk : o maior bloco contigioso da área de vmalloc que é gratuito
3. Comando vmstat
O comando vmstat com a opção -s, apresenta as estatísticas de uso da memória como o comando proc. Aqui está um exemplo:
$ vmstat -s
8161656 K total memory
1216012 K used memory
1186276 K active memory
609632 K inactive memory
6021980 K free memory
2120 K buffer memory
921544 K swap cache
3145724 K total swap
0 K used swap
3145724 K free swap
5888 non-nice user cpu ticks
476 nice user cpu ticks
1520 system cpu ticks
529965 idle cpu ticks
331 IO-wait cpu ticks
939 IRQ cpu ticks
103 softirq cpu ticks
0 stolen cpu ticks
755494 pages paged in
167719 pages paged out
0 pages swapped in
0 pages swapped out
365026 interrupts
374126 CPU context switches
1590618807 boot time
2952 forks
As poucas linhas superiores indicam memória total, memória livre, etc. e assim por diante.
4. Comando top
O comando top é geralmente usado para verificar o uso da memória e da CPU por processo.
No entanto, também relata o uso total de memória e pode ser usado para monitorar o uso total de RAM. O cabeçalho na saída possui as informações necessárias.
Verifique as linhas KiB Mem e KiB Swap no cabeçalho. Eles indicam quantidades totais, usadas e livres da memória.
As informações de buffer e cache também estão presentes aqui, como o comando free.
Se você quiser tornar o top um pouco mais amigável com a memória, execute o comando top -o %MEM, que fará com que o top classifique todos os processos pela memória usada.
top -o %MEM
5. Comando htop
Semelhante ao comando top, o comando htop também mostra o uso da memória junto com vários outros detalhes.
O cabeçalho na parte superior mostra o uso da CPU junto com a RAM e o uso de swap pelas figuras correspondentes.
Informações sobre RAM
Para descobrir informações de hardware sobre a RAM instalada, use o comando demidecode. Ele relata muitas informações sobre a memória RAM instalada.
$ sudo dmidecode -t 17
# dmidecode 2.11
SMBIOS 2.4 present.
Handle 0x0015, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0014
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 2048 MB
Form Factor: DIMM
Set: None
Locator: J1MY
Bank Locator: CHAN A DIMM 0
Type: DDR2
Type Detail: Synchronous
Speed: 667 MHz
Manufacturer: 0xFF00000000000000
Serial Number: 0xFFFFFFFF
Asset Tag: Unknown
Part Number: 0x524D32474235383443412D36344643FFFFFF
As informações fornecidas incluem o tamanho (2048MB), tipo (DDR2), velocidade (667 Mhz) etc.
Conclusão
Todos os comandos mencionados acima funcionam no terminal e não possuem uma interface gráfica.
Ao trabalhar em uma área de trabalho com uma GUI, é muito mais fácil usar uma ferramenta GUI com saída gráfica.
As ferramentas mais comuns são o gnome-system-monitor no gnome e o ksysguard no KDE.
Ambos fornecem informações de uso de recursos sobre CPU, RAM, swap e largura de banda da rede em uma saída visual gráfica e fácil de entender.