Manual

do

Maker

.

com

Raspberry Pi - Cache na memória invés de escrita no SD

Raspberry Pi - Cache na memória invés de escrita no SD

Uma coisa que sempre reafirmo é a fragilidade do cartão de memória. Muita escrita no micro SD do raspberry não é uma boa ideia, e isso é por mais de um motivo. Primordialmente pela preservação do dispositivo de memória, mas também por se tratar de um dispositivo lento, que pode gerar gargalos (e gera) em outros barramentos. Um exemplo muito bom pra isso pode ser visto no post sobre servidor de câmera com Raspberry. Se as imagens geradas fossem armazenadas em disco, certamente afetaria o I/O da ethernet, uma vez que um ciclo da operação de consulta trata de estabelecer conexão, requisitar os dados, então a câmera é acionada, a imagem captura e escrita no SD e posteriormente transportada em rede. Maiores detalhes no post supracitado.

Tudo tem prós e contras. De contra, obviamente a memória RAM é volátil, portanto não tem como fazer persistência de dados. Se você precisa preservar a informação gerada (seja lá por qual meio for), será obrigado a escrever no SD.

Mas como escrever dados na memória como se fosse um componente comum da árvore de diretórios do sistema operacional? - A resposta é simples e tem mais de uma possibilidade.

tmpfs

O próprio nome já diz tudo. Trata-se de um diretório temporário em memória, cujo tamanho da memória você pode reservar através da linha de comando. O processo é bastante simples:

mkdir -p /mnt/RAM
mount -t tmpfs -o size=80M tmpfs /mnt/RAM

Pronto, aí está seu diretório de escrita super-rápida! Provavelmente você já terá alguma coisa em outro diretório como o /dev/shm (que na documentação do kernel afirma que a partir da glibc 2.2 espera-se que seja montado nesse diretório).

Você pode fazer persistência desse recurso a cada boot (lembrando que os dados contidos em RAM serão perdidos em caso de reinicio do sistema) adicionando-o a algum rc ou no /etc/fstab:

tmpfs /mnt/RAM tmpfs defaults,user,exec,auto,rw,size=80M 0 0

O tamanho pode ser qualquer um que a memória comporte. Agora, vamos à segunda opção.

ramfs

A ramfs surgiu depois do ramdisk. O ramdisk é bastante problemático (não vou entrar no assunto) e o ramfs veio para corrigir as imperfeições de seu precursor.

Para montá-lo, é tão simples quanto o tmpfs:

mkdir -p /mnt/RAM
mount -t ramfs -o size=80M ramfs /mnt/RAM

E também pode adicioná-lo a algum rc ou em /etc/fstab:

ramfs       /mnt/RAM ramfs   defaults,user,exec,auto,rw,size=20M      0 0

Quanta RAM disponível eu tenho pra usar?

Claro que você pode utilizar o comando free após o boot do sistema e ver quanto há de memória livre, então selecionar a porção que achar devida. Ou ainda, pode especificar em porcentagem utilizando:

size=15%

Isso reservará 15% da memória livre.

Esse post foi escrito com o propósito de ser auxiliar ao post sobre servidor de câmera com Raspberry, para que não ficasse um texto muito extenso. Se você leu até aqui, acho que vale a pena sugerir que leia também esse post.

Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.

Próximo post a caminho!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.