Como obter uma boa visão geral do uso de RAM

Como obter uma boa visão geral do uso de RAM

Instalei o Ubuntu 14.10 em um servidor. A tarefa principal do servidor é executar uma instalação do MongoDB junto com vários aplicativos NodeJS. Os aplicativos NodeJS serão executados continuamente e aceitarão solicitações externas.

De vez em quando, grandes solicitações chegam, fazendo com que algum aplicativo NodeJS use muita RAM por um curto período de tempo. Tenho tentado monitorar isso, mas não tenho certeza do que fazer com minhas descobertas.

Até agora usei dois comandos para obter insights sobre o uso de RAM. Estes são

free -m

e

sudo htop

O primeiro mostra isso:

                        total       used       free     shared    buffers     cached                                           
Mem:                     3442       3158       283          6        111       1203                                           
-/+ buffers/cache:                  1842       1599                                                                         
Swap:                    0          0          0    

Quando olho para isso, diria que cerca de 280 MB de RAM estão livres. O que não parece muito.

htop me diz o seguinte:

  1  [|||                                         0.8%]     Tasks: 61, 129 thr; 2 running
  2  [|||                                         1.0%]     Load average: 1.16 1.15 0.93
  Mem[|||||||||||||||||||||||||||||||||||||1979/3442MB]     Uptime: 29 days, 00:23:31
  Swp[                                           0/0MB]   

Eu realmente não sei como ler isso. Alguém pode me ajudar aqui?

Acho que minha pergunta no final se resume a isto:

  • Como posso obter informações sobre a quantidade de RAM disponível?
  • Quando a memória RAM é muito pouca? 300MB é considerado muito pouco? Perigosamente?

Responder1

DR: você não precisa se preocupar, desde que a -/+ buffers/cachelinha mostre memória livre suficiente. Se mostrar pouca memória livre e você estiver sendo continuamente swaptransferido para o disco, você precisa se preocupar.

Explicação:

Você está bem com seu cenário atual de uso de RAM. Vamos pegar a saída de free -mpara decompô-lo:

Todas as colunas free -msão autoexplicativas. O importante é observar que você não precisa se alarmar quando o uso de memória estiver alto sem ver a quantidade de memória armazenada em cache e buffer.

A partir da saída, você usou 3.158 MB de seus 3.442 MB de RAM, uma subtração simples diria que você tem apenas 283 MB livres para serem alocados para novos programas. Isso não está certo, você precisa olhar as colunas cachede também, mostrará a quantidade de dados do disco armazenados em cache pela RAM para acesso mais rápido aos arquivos comumente usados ​​e mostrará a quantidade de dados a serem gravados no disco.bufferscachedbuffered

Como você sabe, o acesso ao disco é muito mais lento que a RAM, portanto, para melhorar o desempenho, é bom armazenar alguns dados do disco na RAM. Você tem 1.203 MB de dados em cache e 111 MB de dados em buffer. É bom que sua memória armazene essa quantidade em cache sem apenas manter essa quantidade de RAM ociosa. Isso melhorará muito o seu desempenho.

Para obter a quantidade real de RAM que está sendo usada sem armazenamento em cache/buffer, observe a -/+ buffers/cache:linha. Este resultado é mostrado subtraindo a quantidade armazenada em cache/buffer. Como você pode ver, você tem 1599 MB livres, então tudo parece OK neste estado. Se você perceber que os valores nesta linha estão baixos, você precisa se preocupar e dar uma olhada no uso de RAM.

Observe também que, quando um novo programa for iniciado e não houver memória suficiente após o armazenamento em cache, os caches mais antigos serão limpos automaticamente para liberar espaço para o novo programa. Portanto, desde que o uso real da memória não seja alto e você esteja sendo continuamente trocado para o disco, é bom ter uma quantidade substancial em cache, pois está "usando" sua memória com eficiência.

Responder2

heemayl já cobriu boa parte das informações sobre a memória real disponível. Minha postagem aqui é apenas um oneliner que você pode adicionar ao seu .bashrcalias para usar como uma visão geral rápida do uso real:

free -h | awk '/free/ {getline; x=$2; getline; print "Used "$3 " Out of " x }'

E exemplo de saída:

$ free -h | awk '/free/ {getline; x=$2; getline; print "Used "$3 " Out of " x  }'                                                                 
Used 1.2G Out of 5.6G

Se você estiver interessado em uma investigação mais aprofundada da memória, use cat /proc/meminfo, que lista muitas informações, eeste blogirá ajudá-lo a entender como freeo comando calcula as coisas desse arquivo.

informação relacionada