Linux escrevendo na memória RAM (tmpfs)

Hoje vamos ver como funciona na prática para criar uma área na memória RAM de nosso computador e disponibilizá-la para que o Linux seja capaz de gravar informações nela.

Hands on:
Inicialmente é preciso criar um diretório para servir de ponto de montagem:

[root@vostrolab /]# mkdir /mnt/hdram

Em seguida, montamos uma área de memória com o tamanho desejado, conforme abaixo:

[root@vostrolab /]# mount -t tmpfs -o size=1024M tmpfs /mnt/hdram

Para testar a velocidade de gravação nesta unidade, o comando abaixo pode ser utilizado para gravar 800mb:

[root@vostrolab /]# dd if=/dev/zero of=/mnt/hdram/teste.iso bs=1024k count=800
800+0 records in
800+0 records out
838860800 bytes (839 MB) copied, 0.958011 s, 876 MB/s

Como podemos ver acima grifado em vermelho, a velocidade é muito maior que a escrita em disco abaixo (comparando com o /tmp):

[root@vostrolab /]# dd if=/dev/zero of=/tmp/teste.iso bs=1024k count=200
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 1.73334 s, 121 MB/s

Podemos avaliar a quantidade de memória usada antes e depois de gravar o arquivo de 800mb:

ANTES:

[root@vostrolab /]# sync && echo 3 > /proc/sys/vm/drop_caches
[root@vostrolab /]# free -m
total       used       free     shared    buffers     cached
Mem:          3956        874       3082          0          2        196
-/+ buffers/cache:        674       3281
Swap:         1906          0       1906

DEPOIS (196 + 800 = 996 com dois mb que aumentou por algum outro motivo = 998):

[root@vostrolab hdram]# free -m
total       used       free     shared    buffers     cached
Mem:          3956       1680       2275          0          4        998
-/+ buffers/cache:        677       3278
Swap:         1906          0       1906

Removendo o arquivo teste.iso de nossa unidade de memória, podemos ver que o sistema reduz a quantidade cached:

[root@vostrolab /]# rm /mnt/hdram/teste.iso
rm: remove regular file `/mnt/hdram/teste.iso’? y
[root@vostrolab /]# free -m
total       used       free     shared    buffers     cached
Mem:          3956        881       3074          0          4        201
-/+ buffers/cache:        675       3280
Swap:         1906          0       1906

Verifique também que durante todo o processo nossa SWAP ficou idêntica, ou seja, podemos garantir que nosso experimento gravou realmente na memória RAM devido à velocidade de escrita.

Fica então a grande dica: O que podemos otimizar em nossos shellscripts e sistemas de informação em geral que são hospedados em Linux, fazendo o uso deste recurso? Veja que, segundo meus cálculos, neste exemplo feito em um laptop com memória ram convencional, temos um ganho de 86% em performance 😉

“Pensa! O pensamento tem poder
Mas não adianta só pensar.
Você também tem que dizer! Diz!
Porque as palavras têm poder.
Mas não só dizer.
Você também tem que fazer! Faz!
Porque você só vai saber se o final vai ser feliz depois que tudo acontecer”.

Gabriel O Pensador

Obs.1: Cuidado ao testar esta solução em seu ambiente, confira a quantidade de memória RAM disponível antes de fazer principalmente o “dd”.
Obs.2: Sobre o comando sync e o arquivo /proc/sys/vm/drop_caches, foram usados para limpar o cache de memória. Vide post https://blog.smallbee.com.br/limpando-cache-de-discomemoria-no-linux/

Por: Hudson Murilo dos Santos
Referências: man mount

Leave a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *