terça-feira, 29 de março de 2016

Analisando o uso da memória ram com o free

Um dos motivos para a lentidão de um computador é o elevado uso de memória RAM, o que faz com que o sistema operacional use memória virtual (swap). A memória virtual é, na verdade, um arquivo em disco ou uma partição especialmente formatada para isso. Como o disco é, em média, mil vezes mais lento do que a memória RAM, quanto mais memória virtual for usada mais lento o micro fica.


Um dos comandos mais usado em ambiente Linux para verificar o uso da memória ram é o free.

$ free
                               total           used            free               shared    buffers     cached
Mem:                      8226632    7763568     463064          0             265932    4523028
-/+ buffers/cache:   2974608    5252024
Swap:                     0                0                 0

Você pode usar as opções -k (para mostrar os dados em kbytes), -m (megabytes), -g (gigabytes) ou -h (para mostrar os valores na forma "humana"). 

$ free -h
                                  total       used       free     shared    buffers     cached
Mem:                         7,8G      7,4G       434M  0B           259M       4,3G
-/+ buffers/cache:      2,8G      5,0G

Swap:                        0B         0B         0B

Reparem que eu tenho somente 434 Mb disponível. Mas 4,3 Gb estão sendo usados para cache e 259 Mb para buffer. Essas memórias podem ser liberadas caso o sistema precise. Portanto, na prática eu ainda tenho 434 Mb + 259 Mb + 4,3 Gb de memória RAM livre, ou seja, 5,1 Gb. Reparem que meu sistema nem tem memória swap configurada.


Você pode ir analisando o uso da memória a medida que uma aplicação abre. No exemplo abaixo, o parâmetros "-s 5" faz com que o free rode a cada segundo, enquanto que o "-c 5" faz o free parar depois de 5 amostras.

$ free -s 5 -c 5 -m
                                  total       used       free     shared    buffers     cached
Mem:                         8033      7602      430      0             260          4433
-/+ buffers/cache:      2909      5124
Swap:                        0            0            0

                                  total       used       free     shared    buffers     cached
Mem:                         8033      7607      426      0             260          4436
-/+ buffers/cache:      2910      5123
Swap:                        0            0            0

                                  total       used       free     shared    buffers     cached
Mem:                         8033      7624      409      0             260          4453
-/+ buffers/cache:      2910      5122
Swap:                        0            0            0

                                  total       used       free     shared    buffers     cached
Mem:                         8033     7614       419      0             260          4443
-/+ buffers/cache:      2911     5122
Swap:                        0           0             0

                                  total       used       free     shared    buffers     cached
Mem:                         8033      7612      421      0             260          4441
-/+ buffers/cache:      2911      5122
Swap:                        0            0            0

* Artigo publicado em 07/03/2014. Revisto e corrigido.