A RAM, para Memória de Acesso Aleatório, é um componente crítico de um sistema Linux que precisa de ser monitorizado de perto.
Em alguns casos, poderá ficar sem memória, deixando o seu servidor com tempos de resposta muito lentos ou ficando completamente sem resposta.
Como consequência, saber como verificar a sua RAM no Linux é crucial porque poderá ser capaz de tomar medidas preventivas em vez de correctivas.
P>É possível que queira também aumentar a sua memória swap, também conhecida como memória virtual, a fim de melhorar o desempenho do seu servidor.
Neste tutorial, vamos listar todas as formas de verificar a sua RAM no Linux.
Tabela de conteúdos
Verifica a RAM no Linux usando gratuitamente
O comando mais popular para verificar a sua RAM no Linux é usar o comando “gratuito”.
$ free total used free shared buff/cache availableMem: 4039588 3475216 137584 39596 426788 287580Swap: 0 0 0
Como pode ver, a saída é dividida em duas categorias: memória (a RAM actual) e swap (também chamada memória virtual).
Ao utilizar grátis, é-lhe fornecida a seguinte informação :
- total : a quantidade total de memória que está actualmente instalada no seu sistema em kilobytes;
- utilizada : a quantidade de RAM actualmente utilizada no seu sistema em kilobytes;
- grátis : a quantidade de memória livre disponível no seu sistema em kilobytes;
- partilhada : representa a memória utilizada por tmpfs que é um sistema de ficheiros virtual que parece estar montado mas pertence à memória volátil;
- buffers : memória utilizada pelos buffers do kernel;
- cache : o número de memória utilizada pela cache de páginas onde os dados podem ser armazenados primeiro antes de serem escritos no disco;
- disponível : a memória disponível no sistema em kilobytes
Note que mesmo que muita memória possa ser utilizada pela cache ou pelos buffers, o Kernel pode libertar este espaço se o seu sistema necessitar de mais memória para processos.
Como o comando lsblk que descobrimos nos nossos tutoriais de disco, o “comando gratuito” pode ser exibido num formato amigo do ser humano.
Para verificar a RAM actual disponível usando um formato amigo do ser humano, use “free” com a opção “-h”.
total used free shared buff/cache availableMem: 3.9G 3.3G 127M 38M 400M 256MSwap: 0B 0B 0B
Como pode ver, a saída é mais fácil de ler mas é arredondada.
Simplesmente, com o comando livre é possível ter colunas totais exibidas para verificar a quantidade total de RAM e trocar disponível no seu sistema.
Para mostrar colunas totais, use “free” com a opção “-t”.
$ free -t total used free shared buff/cache availableMem: 4039588 3499392 128828 39596 411368 263292Swap: 0 0 0Total: 4039588 3499392 128828
Nota que os comandos podem ser combinados de modo a ter uma saída amiga do ser humano e a ter as colunas totais exibidas.
$ free -th total used free shared buff/cache availableMem: 3.9G 3.3G 125M 38M 402M 257MSwap: 0B 0B 0BTotal: 3.9G 3.3G 125M
Cheque a RAM usando vmstat
Outra óptima maneira de verificar o uso actual da sua memória virtual é usar o comando “vmstat”.
A saída pode ser um pouco difícil de ler mas aqui estão os detalhes das colunas exibidas :
- r : número de processos executáveis no seu sistema;
- b : número de processos em sono ininterrupto;
- swpd : a quantidade de RAM actualmente utilizada pelo seu sistema;
- free : a memória disponível
- buff, cache : a RAM utilizada pelos buffers do kernel e pelas caches de páginas;
- inactive, active : a quantidade de memória inactiva e activa
- si : a swap utilizada a partir do disco
- assim : a memória swap trocada para o disco
As outras colunas estão relacionadas com a E/S do disco e com a utilização da CPU que pode não ser relevante no nosso caso.
$ vmstat -s 4039588 K total memory 3460532 K used memory 3398428 K active memory 198356 K inactive memory 162648 K free memory 48904 K buffer memory 367504 K swap cache 0 K total swap 0 K used swap 0 K free swap
Como pode ver, é-lhe fornecido um grande número de saídas de linha, mas apenas algumas são relevantes para o que estamos a tentar alcançar.
No topo da saída vmstat, pode ver a memória total, a memória usada, a memória activa (que é equivalente à memória usada), a inactiva e a memória livre.
As colunas são muito semelhantes às colunas apresentadas utilizando o comando livre.
É-lhe também fornecida a memória buffer, a cache swap (que é equivalente à cache da página), bem como a swap total, se houver.
Inspecting /proc/meminfo para verificar a RAM
Como já sabe, o Kernel é o que virtualiza o sistema de ficheiros e fornece pontos de entrada a alguns dos seus dispositivos no seu sistema.
Por exemplo, o directório /proc poderá armazenar referências a processos no seu sistema (isto é, descritores de ficheiros); da mesma forma, o /dev irá armazenar referências a dispositivos virtuais que, no ponto final, irão para discos reais.
No entanto, um ficheiro do ficheiro /proc pode ser mais importante do que outros quando se trata de verificar a sua RAM : meminfo.
Como pode ver, o Kernel está a fornecer-lhe estatísticas próximas das apresentadas no comando “free” ou “vmstat”.
Isso não é de facto uma grande surpresa porque esses comandos estão de facto a obter a sua informação do próprio ficheiro meminfo.
Utilizando o ficheiro /proc/meminfo, tem acesso à quantidade total de memória do seu sistema, à memória livre disponível, à memória disponível, bem como aos buffers e caches de páginas que podem ser utilizados.
Finalmente, tem acesso à cache swap, bem como à swap activa e inactiva utilizada.
Listar hardware RAM utilizando dmidecode
Todos os comandos utilizados anteriormente são muito úteis, mas só podem ser utilizados para verificar a RAM utilizada num dado momento.
Em alguns casos, poderá estar interessado em saber mais sobre o seu hardware RAM.
Para isso, tem de usar o comando dmidecode.
Aviso : poderá ter de ser sudo para executar o dmidecode no seu sistema.
$ sudo dmidecode# dmidecode 3.1Getting SMBIOS data from sysfs.SMBIOS 2.4 present.13 structures occupying 405 bytes.Table at 0x000F10D0.Handle 0x0000, DMI type 0, 24 bytesBIOS Information Vendor: Private Version: 20171212 Release Date: 12/12/2017 Address: 0xE8000 Runtime Size: 96 kB ROM Size: 64 kB Characteristics: BIOS characteristics not supported Targeted content distribution is supported BIOS Revision: 1.0
Por defeito, o dmidecode é utilizado para executar um dump de todo o hardware utilizado no seu sistema.
Para obter o hardware dedicado à sua memória, tem de especificar o tipo de hardware utilizado.
$ sudo dmidecode --type memory# dmidecode 3.1 Getting SMBIOS data from sysfs. SMBIOS 2.4 present. Handle 0x1000, DMI type 16, 15 bytes Physical Memory Array Location: Other Use: System Memory Error Correction Type: Multi-bit ECC Maximum Capacity: 4 GB Error Information Handle: Not Provided Number Of Devices: 1 Handle 0x1100, DMI type 17, 21 bytes Memory Device Array Handle: 0x1000 Error Information Handle: 0x0000 Total Width: 64 bits Data Width: 64 bits Size: 4096 MB Form Factor: DIMM Set: None Locator: DIMM 0 Bank Locator: Not Specified Type: RAM Type Detail: None
Como pode ver, a saída do dmidecode é bastante útil: com ele pode saber mais sobre a capacidade máxima do seu sistema e como é distribuído.
Neste exemplo, o meu sistema está equipado com 4 GB de memória total fornecida por uma única RAM localizada no espaço de memória DIMM 0.
Utilizando a imagem aqui fornecida, a memória RAM teria sido introduzida na primeira ranhura disponível (DIMM 0)
Verifica o uso da RAM usando Prometheus
Os métodos descritos acima funcionam muito bem, mas são um pouco antiquados em comparação com as soluções de monitorização modernas.
Uma óptima forma de controlar a sua utilização da RAM é utilizar uma pilha de monitorização moderna como a Prometheus & Grafana.
Prometheus expõe um Exportador de Nó que pode ser utilizado para reunir métricas do hospedeiro em particular métricas de memória.
Verificando na página Github do Nó Exportador, terá de activar o colector “meminfo” especializado na recolha de métricas de memória do ficheiro /proc/meminfo.
De lá, pode facilmente importar um painel de bordo existente para o Grafana, a fim de ter estatísticas de memória em tempo real sobre o seu sistema.
Verificando o tutorial do Exportador de Nó que ligámos antes deve obter a mesma saída, pode escolher aqui o painel de bordo do Grafana da sua escolha.
Track RAM usage using top/htop commands
Finalmente, poderá achar útil utilizar os comandos interactivos top e htop para acompanhar o uso da sua memória.
Top está nativamente instalado no seu sistema, basta executar “top” para obter as estatísticas sobre o seu sistema.
Como pode ver aqui, são-lhe fornecidas estatísticas da CPU, mas também a quantidade total de RAM e swap utilizada pelo seu sistema.
São-lhe também fornecidas as quantidades disponíveis, bem como o buffer e os caches de páginas utilizados.
As estatísticas são dadas para todo o seu sistema mas também são fornecidas para cada processo na sua instância ordenado de cima para baixo.
O comando htop também pode ser utilizado eficazmente a fim de fornecer um seguimento de memória amigo do ser humano no seu servidor.
O htop pode não estar nativamente instalado no seu sistema, pelo que poderá ter de o instalar.
$ sudo apt-get install htop$ sudo yum install htop
Quando o htop está instalado, pode começar a executá-lo executando “htop”
Como pode ver, as saídas são bastante semelhantes : são apenas mais fáceis de ler.
Conclusion
Neste tutorial, aprendeu sobre as muitas formas diferentes de verificar a sua RAM no Linux utilizando quer a linha de comando quer soluções de monitorização modernas como o Prometheus e o Grafana.
Se precisar de melhorar a gestão da memória no seu sistema, deve definitivamente verificar os tutoriais relacionados com a troca à medida que elaboram mais sobre a importância da memória virtual no seu sistema.
Se estiver interessado na administração do sistema Linux, não deixe de consultar outros tutoriais que temos sobre o assunto.