sexta-feira, 7 de março de 2014

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. 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 rma 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