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

1

Eu instalei o Ubuntu 14.10 em um servidor. A tarefa principal do servidor está executando uma instalação do MongoDB junto com vários aplicativos NodeJS. Os aplicativos NodeJS serão executados continuamente e aceitarão solicitações de fora.

De vez em quando, grandes solicitações chegam, fazendo com que alguns aplicativos NodeJS usem muita memória RAM por um curto período de tempo. Eu tenho tentado monitorar isso, mas não tenho certeza do que fazer com minhas descobertas.

Até agora eu usei dois comandos para obter insights sobre o uso da 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 eu olho para isto, eu diria que cerca de 280MB de RAM é grátis. 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 não sei agora como ler isso. Alguém pode me ajudar aqui?

Eu acho que minha pergunta no final se resume a estes:

  • Como posso saber o quanto de RAM está disponível?
  • Quando a memória RAM é pequena demais? 300MB é considerado muito pouco? Perigosamente assim?
por Mathyn 01.05.2015 / 11:45

2 respostas

1

TL; DR : você não precisa se preocupar, desde que a linha -/+ buffers/cache mostre memória livre suficiente. Se ele mostra pouca memória livre e você está sendo continuamente swap ped para o disco, então você precisa se preocupar.

Explicação:

Você é bom com seu cenário atual de uso de RAM. Vamos pegar a saída de free -m para dividi-lo:

Todas as colunas de free -m são auto-explicativas. É importante notar que você não precisa se alarmar quando o uso de memória é alto sem ver a quantidade de memória armazenada em cache e armazenada em buffer.

Da saída, você usou 3158 MB de seus 3442 MB de RAM, uma subtração simples diria que você tem apenas 283 MB livres para ser alocado a novos programas. Isso não está certo, você precisa examinar também as colunas cached e buffers , cached mostrará a montagem de dados em disco armazenada em cache pela RAM para acesso mais rápido aos arquivos mais usados e buffered mostra a quantidade de dados a serem gravados no disco.

Como você sabe, o acesso ao disco é muito mais lento que a RAM, então, para melhorar o desempenho, é bom armazenar alguns dados dos discos na RAM. Você tem 1203 MB de cache e 111 MB de dados em buffer. Isso é uma coisa boa que sua memória está armazenando esse valor sem armazenar 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, consulte a linha -/+ buffers/cache: . Este resultado é mostrado subtraindo o valor em cache / buffer. Como você pode ver, você tem 1599 MB livres, então tudo parece OK neste estado. Se você vir que os valores nesta linha são baixos, então você precisa se preocupar e dar uma olhada no uso da 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. Assim, enquanto o uso de memória real não for alto e você estiver continuamente sendo trocado para o disco, é bom ter uma quantidade substancial no cache, já que ele está "usando" sua memória com eficiência.

    
por heemayl 01.05.2015 / 15:09
0

O heemayl já cobriu boa parte das informações sobre a memória disponível real. Meu post aqui é meramente oneliner casal que você pode adicionar ao seu .bashrc como um alias para usar como visão geral rápida do uso real:

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

E exemplo de saída:

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

Se você estiver interessado em uma investigação mais detalhada da memória, use cat /proc/meminfo , que lista muitas informações e este blog ajudará você a entender como o comando free calcula o material desse arquivo.

    
por Sergiy Kolodyazhnyy 01.05.2015 / 17:12