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