Como usar o comando grátis no Linux

Um prompt de terminal em um PC Linux.
Fatmawati Achmad Zaenuri / Shutterstock

O freecomando do Linux exibe a quantidade de memória do seu computador em uso e a quantidade ainda disponível para uso dos programas. Sua saída pode ser confusa para os não iniciados, mas mostraremos como entendê-la.

O comando grátis

O freecomando imprime um resumo rápido do uso de memória em uma janela de terminal. ele não tem muitas opções ou truques na manga, e não demorou muito tempo ou esforço para aprender a usá-lo. Aprender a interpretar corretamente as informações que ele fornece, entretanto, é outra história. É muito fácil ficar confuso com o que freeestá lhe dizendo.

Em parte, isso se deve à terminologia – como a diferença entre “gratuito” e “disponível” – e em parte é devido ao funcionamento interno da memória e das rotinas de gerenciamento do sistema de arquivos do kernel do Linux. Se você tiver memória sobressalente para que o kernel possa fazer bom uso, ele a pegará emprestada para seus próprios fins. Até você precisar de volta.

Vamos mergulhar nos mecanismos subjacentes e nas rotinas de dados para que você possa avaliar o que está acontecendo por baixo do capô e como tudo isso afeta o uso de sua memória de acesso aleatório (RAM).

As colunas gratuitas

Vamos freecomeçar sem opções e ver o que temos:

livre

o comando livre em uma janela de terminal

Isso está enrolado de uma forma feia. No seu computador, você poderá esticar a janela do terminal. Aqui está a saída em uma tabela mais organizada:

        total usado grátis compartilhada buff / cache disponível
Mem: 2038576 670716 327956 14296 1039904 1187160
Troca: 1557568 769096 788472

Os números são dados em kibibytes , que são 1024 bytes. No Manjaro, o freecomando tem o alias de free -m. Isso força o freeuso de mebibytes , que são 1.048.576 bytes. Em outras distribuições, o padrão é kibibytes.

Os relatórios da linha superior sobre a memória do sistema, os relatórios da linha inferior sobre o espaço de troca. Vamos apresentar as colunas aqui e, em seguida, examiná-las com mais detalhes em breve. As colunas da linha de memória são as seguintes:

  • Total : A quantidade total de RAM física instalada em seu computador.
  • Usado : Calculado por Total– ( Free+ Buffers+ Cache).
  • Livre : a quantidade de memória não utilizada. Por que o Total não = Usado + Grátis? Explicaremos isso em breve.
  • Compartilhada : memória que é usada pelo tmpfssistema de arquivos.
  • Buff / cache : Memória usada para buffers e cache.
  • Disponível : Esta é uma estimativa da memória que está disponível para atender às solicitações de memória de aplicativos, qualquer outro software em funcionamento em seu computador, como seu ambiente de área de trabalho gráfico e comandos do Linux.

Para a linha de troca, as colunas são:

  • Total : o tamanho da partição ou arquivo de troca.
  • Usado : a quantidade de espaço de troca em uso.
  • Livre : o espaço de troca restante (não utilizado)

A ampla tela

Para separar as Buff/cachefiguras em suas próprias colunas, use a -wopção (larga):

free -w

free -w em uma janela de terminal

Esse é o resultado. Em vez de uma Buff/cachecoluna, temos uma Bufferscoluna e uma Cachecoluna. Aqui estão os números em uma tabela:

        total usado cache de buffers compartilhados grátis disponível
Mem: 2038576 683724 265708 14660 94568 994596 1160420
Troca: 1557568 761416 796152

Vamos ver o que representam os números nas colunas.

Recomendado:  Os carros autônomos da Waymo agora levarão você ao aeroporto (em Phoenix)

A Coluna Total

Este é o mais simples. É a quantidade de RAM que você instalou na placa-mãe. Este é o recurso precioso pelo qual todos os processos em execução estão lutando. Pelo menos eles estariam lutando se o kernel não estivesse arbitrando.

Aliás, o local de onde freereúne suas informações é o /proc/meminfopseudo-arquivo. Você mesmo pode examinar este arquivo com o seguinte comando:

menos / proc / meminfo

menos / proc / meminfo em uma janela de terminal

A saída é uma única lista de nomes e valores.

Saída do comando less / proc / meminfo em uma janela de terminal

A coluna usada

É aqui que começa a ficar interessante.

A Usedfigura representa o que você provavelmente espera, além de um monte de outras coisas. Esta é a memória que é alocada para processos, tomada por programas do usuário e usada por coisas como os  ambientes de  desktop GNOME ou KDE . Sem surpresas aí. Mas também inclui os números Bufferse Cache.

A RAM que não está sendo usada para algo é RAM desperdiçada. O kernel usa RAM sobressalente para armazenar caches e buffers que permitem operar com mais eficiência. Portanto, esta RAM está sendo usada para algo pelo kernel, mas não por nada no espaço do usuário .

Se for recebido um pedido de memória que só pode ser atendido pela renúncia de parte da RAM que o kernel está usando para seus próprios dispositivos, então é o que acontece, perfeitamente. Liberar essa RAM e usá-la para outros aplicativos não afetará o funcionamento correto do sistema Linux – nada vai quebrar – mas pode afetar o desempenho do sistema.

Portanto, esta coluna realmente significa “toda a RAM que está em uso por algo, mesmo que possa ser recuperada instantaneamente”.

A Coluna Livre

Esta coluna contém o valor da quantidade de RAM que não está sendo usada por nada. Como a Usedcoluna contém os números de Buffers e Cache, não é incomum que sistemas Linux em perfeito funcionamento tenham muito pouca RAM listada como “livre”.

Isso não é necessariamente uma coisa ruim e quase certamente significa que você tem um sistema funcionando perfeitamente normal que está regulando o uso de RAM corretamente. Ou seja, a RAM está sendo usada por aplicativos e outros processos de espaço do usuário e pelo kernel em seus esforços para tornar o desempenho de seu computador o melhor possível.

A coluna compartilhada

A figura na Sharedcoluna representa a memória dedicada a manter  tmpfs sistemas de arquivos baseados em RAM . Esses são sistemas de arquivos criados na memória para facilitar o funcionamento eficiente do sistema operacional. Para ver quais tmpfssistemas de arquivos estão presentes, use o df comando .

As opções que estamos usando são:

  • -h (humano): Use unidades sensíveis e de melhor ajuste.
  • --total: Exibe uma linha com os totais na parte inferior da saída.
  • --type=tmpfs: Relate apenas nos tmpfssistemas de arquivos.
df -h --total --type = tmpfs

df -h --total --type = tmpfs em uma janela de terminal

A primeira coisa que o atinge quando você olha para esses valores é que eles são muitas vezes maiores do que a figura na Sharedcoluna. Os tamanhos mostrados aqui são os tamanhos máximos desses sistemas de arquivos. Na realidade, cada um deles ocupa apenas a memória de que precisa. A figura na Sharedcoluna é a única a acreditar no uso da memória.

O que esses sistemas de arquivos contêm? Aqui está uma análise rápida:

  • / run : contém muitos arquivos temporários, como arquivos PID , diário do systemd que não precisa ser preservado nas reinicializações, informações relacionadas a soquetes de domínio Unix , FIFOs e gerenciamento de daemons .
  • / dev / shm : Isso permite a implementação de gerenciamento de memória compatível com POSIX no Debian e distribuições Linux derivadas do Debian.
  • / run / lock : contém arquivos de bloqueio. Eles são usados ​​como indicadores para permitir que o sistema saiba que um arquivo ou outro recurso compartilhado está em uso. Eles contêm o PID do processo usando aquele recurso.
  • / sys / fs / cgroup : Este é um elemento central do esquema que gerencia  os grupos de controle . Os processos são organizados em grupos hierárquicos de acordo com os tipos de recursos que usam. Permite que o uso dos recursos pelos processos sejam monitorados e limitados.
  • / run / user / 121 : Esta é uma pasta criada por pam_systemd para armazenar arquivos temporários para um usuário. Nesse caso, o usuário tem um ID 121. Observe que o “usuário” pode ser um usuário normal, um daemon ou algum outro processo.
  • / run / user / 1000 : Esta é uma pasta createdde pam_systemd para armazenar arquivos temporários para este usuário, que tem o ID de usuário 1000. Este é o usuário atual, usuário dave.
Recomendado:  Economize $ 100 em um Pixel 6 Pro, um de nossos telefones favoritos

As colunas do buffer e do cache

As  colunas Buffere Cachesó aparecem se você tiver usado  -w(largo). Sem a wopção , os números dessas duas colunas são combinados na Buff/cachecoluna.

Essas duas áreas de memória interagem e dependem uma da outra. A área de cache contém (principalmente) dados que foram lidos do disco rígido . Ele é retido no caso de você precisar acessá-lo novamente. É mais rápido extrair os dados do cache do que lê-los do disco rígido. O cache também pode conter dados que foram modificados, mas ainda não gravados de volta no disco rígido, ou valores que foram calculados e ainda não foram salvos em um arquivo.

Para controlar os vários fragmentos de arquivo e stashes de dados, o kernel constrói um índice para a área de memória cache, na área de memória de buffers. Buffers são partes da memória que contêm o bloco de disco e outras estruturas de informação. Eles contêm dados sobre os dados mantidos na área de memória cache. Portanto, os buffers são metadados para o cache.

Quando uma solicitação de leitura de arquivo é feita, o kernel lê os dados nas estruturas de dados do buffer procurando o arquivo ou fragmento de arquivo que foi solicitado. Se for encontrado, o pedido é atendido a partir da área de memória cache apontada pelas estruturas de dados do buffer. Se não estiver presente no cache – e também não estiver nos metadados na área de memória dos buffers – o arquivo é lido do disco rígido.

As estruturas na área de memória buffer são:

  • Cabeças do buffer : cada buffer é descrito em um bloco de dados denominado cabeçalho do buffer . Além disso, se os dados no bloco forem alterados e a página de memória associada “suja”, o descritor rastreia a necessidade de gravar os dados de volta no disco rígido.
  • Inodes : os Inodes contêm metadados sobre arquivos e diretórios , incluindo onde eles estão no disco rígido (ou sistema de arquivos virtual), o tamanho do arquivo e os carimbos de data / hora do arquivo.
  • Dentries : um dentry (entrada de diretório) é uma estrutura que contém informações de listagem de diretório . Pense nisso como uma lista de inodes para os arquivos e diretórios dentro de um diretório.

Você pode ver por que faz sentido condensar a memória usada para as áreas de buffer e memória cache em uma única Buff/cachecoluna. Eles são como duas partes da mesma coisa. A área de memória cache seria inútil sem a área de memória buffer fornecendo um índice para seu conteúdo.

A coluna disponível

A coluna disponível é a soma da Freecoluna mais as partes das Bufferscolunas e Cache (ou a Buff/cachecoluna) que podem ser abandonadas imediatamente . A Availablecoluna é uma estimativa, não um número exato. É uma estimativa informada e precisa, mas não deve ser considerada tão precisa até o último byte.

Recomendado:  Como importar favoritos para o Mozilla Firefox

Alterando as unidades de exibição

Para alterar as unidades que exibem as figuras gratuitamente, use uma das seguintes opções.

  • -b : Exibe os valores em bytes.
  • -k : Exibe os valores em kibibytes (que é o padrão).
  • -m : Exibe os valores em mibibytes.
  • -g : Exibe os valores em gibibytes.
  • -h : Exibe os valores em unidades sensíveis de melhor ajuste (legíveis).

Por exemplo, para usar valores legíveis por humanos, use a -hopção:

livre -h

-h grátis em uma janela de terminal

freeusará a unidade mais apropriada para cada valor. Como você pode ver, alguns dos valores são exibidos em MiB e alguns em GiB.

Exibindo um total

A --totalopção livre causa para apresentar uma linha total que resume os valores a partir dos Total, Usede Freecolunas do MAM e Swaplinhas.

free -h --total

free -h --- total em uma janela de terminal

A opção de contagem

A -copção (contagem) diz freepara correr um certo número de vezes, com uma pausa de um segundo entre cada uma. Para freeexecutar duas vezes, use este comando:

free -h -c 2

free -h -c 2 em uma janela de terminal

Executando gratuitamente continuamente

Se você quiser ver o efeito de um determinado aplicativo no uso da memória, pode ser útil freeexecutá-lo continuamente. Isso permite que você execute freeem uma janela de terminal enquanto inicia, usa e fecha o aplicativo que está investigando.

A -sopção (segundos) determina a duração da pausa entre cada execução de free. Para ter uma execução gratuita continuamente com uma pausa de três segundos entre cada atualização, use este comando:

free -s 3

free -s 3 em uma janela de terminal

Pressione Ctrl+Cpara interromper o processo e retornar ao prompt de comando.

Combinando as opções de contagem e segundos

Para freeexecutar com uma pausa especificada entre cada atualização, mas parar após um certo número de relatórios, combine as opções -s(segundos) e -c(contagem). Para ter freeexecutado cinco vezes com uma pausa de dois segundos entre cada atualização, use este comando:

free -s 2 -c 5

free -s 2 -c 5 em uma janela de terminal

Depois que as cinco atualizações aparecerem, o processo será encerrado automaticamente e você retornará ao prompt de comando.

auto-rescisão do comando free -s 2 -c 5 em uma janela de terminal

Separando memória baixa e alta

Isso é de pouca utilidade hoje em dia, mas se você estiver executando o Linux em um computador de 32 bits, pode ser útil. Ele separa o uso de memória de memória baixa e memória alta.

Em um sistema operacional baseado em Linux de 32 bits, a CPU pode endereçar um máximo de 4 GB de memória. A memória é dividida em memória baixa e memória alta. Pouca memória é mapeada diretamente para a parte do kernel do espaço de endereço. Memória alta não possui mapeamento de kernel direto. A memória alta geralmente está acima de 896 MB.

Isso significa que o próprio kernel (incluindo seus módulos ativos) só pode fazer uso de pouca memória. Os processos do usuário – qualquer coisa que não seja o kernel em si – podem potencialmente fazer uso de memória alta ou baixa.

Em um computador de 64 bits, não haverá valores mostrados para memória alta:

free -h -l

free -h -l em uma janela de terminal

Memórias são feitas disso

Uma rápida recapitulação:

  • Total : a quantidade de RAM instalada em seu sistema.
  • Usado : igual a Total– ( Free+ Buffers+ Cache).
  • Livre : a quantidade de memória completamente não utilizada por nada.
  • Compartilhado : memória ocupada pelos tmpfssistemas de arquivos.
  • Buffer : as estruturas de dados que são mantidas para fornecer um índice para tudo o que é armazenado Cache.
  • Cache : dados lidos do disco rígido, dados modificados esperando para serem gravados de volta no disco rígido e outros valores computados.
  • Disponível : o que é realmente gratuito. Uma estimativa da memória em Free, Buffere Cacheque pode ser usada para atender a uma solicitação de memória.