O Raspberry Pi tem uma quantidade limitada de RAM e não pode ser adicionado mais, pois é um computador de placa única. O Pi 3 tem apenas 1 GB de RAM. O Pi 4, dependendo do modelo, tem até 8 GB de RAM. Às vezes, os aplicativos de software exigem mais memória. Na maioria das vezes, esse requisito de memória é um breve pico. Quando isso acontece, o Raspberry Pi "congela" ou "trava" devido à memória limitada. A falha também pode levar à corrupção do cartão SD, resultando em perda de dados.

Para evitar a possibilidade de uma falha, a memória virtual na forma de troca pode ser configurada no Pi. A quantidade certa precisa ser adicionada no dispositivo correto para tirar o melhor proveito dele. Todo o processo é explicado sistematicamente com instruções para vários sistemas operacionais.

Entendendo como o processo de memória funciona

RAM é a memória física. No Pi 4, está localizado ao lado do processador. No Pi 3, a RAM é colocada na parte inferior da placa de circuito impresso. Ao contrário das placas-mãe comuns, a RAM em um Raspberry Pi é soldada à placa, o que restringe a possibilidade de aumentar sua capacidade.

Quando um aplicativo de software é executado, ele usa uma parte da RAM para seu funcionamento. Pense em um navegador como um exemplo. Quando uma página da Web é carregada em uma guia, ela armazena os dados da página na RAM junto com a memória necessária para executar o programa do navegador. Quando mais guias são carregadas, a RAM também é preenchida. Sem memória virtual, em algum momento a RAM ficará sem capacidade e novas guias não poderão ser carregadas. A navegação nas guias existentes também diminuirá significativamente, pois não há memória livre para operações básicas. Neste ponto, o Pi parará de responder e a única maneira de trazê-lo de volta é através do ciclo de energia (desligando e ligando).

Esse desligamento aleatório pode causar sérios problemas, especialmente quando o sistema operacional está no cartão SD. O cartão pode ficar bloqueado para o estado “somente leitura” ou, na pior das hipóteses, ser totalmente corrompido. É quando ocorre a perda total de dados.

O impacto da condição de “falta de memória (OOM)” pode ser minimizado configurando a troca para ser usada como memória virtual. A troca pode ser configurada na forma de um arquivo ou partição no disco e funciona como uma extensão da RAM. Quando a RAM disponível se esgota, os dados raramente usados ​​nela são movidos para troca em um processo chamado troca. No caso do exemplo do navegador, seriam dados de uma guia carregada que é menos usada. Quando a guia for ativada novamente, esses dados serão movidos de volta para a RAM para mostrar a página da web.

A troca trará estabilidade para operações com uso intensivo de memória. Se houver um breve pico no consumo de memória, a troca ajudará a absorver o pico e manter o sistema funcionando em vez de terminar em um congelamento total.

Escolhendo o dispositivo certo para configurar a troca

A troca é essencial, mas a localização e o tamanho da troca a ser configurada também são igualmente importantes. Idealmente, a troca deve estar em um dispositivo rápido. Ao lado dos caches no processador, a RAM é a segunda memória mais rápida. DDR4 no Pi tem uma largura de banda de 4,4 GBps (gigabytes por segundo). A troca precisa estar em um dos outros dispositivos de armazenamento disponíveis.

Se um cartão SD for usado para o sistema operacional, uma pequena área de troca é configurada nele por padrão. Você pode verificar seu tamanho usando o comando:

livre -m

99 MB não é uma quantidade significativa de swap. Vai encher bem rápido. Os cartões SD têm ciclos de gravação limitados, pois usam memória flash e a troca excessiva pode reduzir sua vida útil. Além disso, eles têm baixa largura de banda de cerca de 50 MBps com desempenho de leitura/gravação de arquivos de 4k muito menor, o que é essencial para a troca de arquivos menores.

Os discos rígidos têm discos giratórios neles. Embora confiáveis, eles têm tempos de busca mais altos e não são úteis para troca.

Um SSD barato para o sistema operacional é uma escolha razoavelmente melhor. Os algoritmos de nivelamento de desgaste reorganizam os dados de células flash desgastadas e prolongam sua vida útil. Em um Pi, a largura de banda do SSD é de cerca de 150 MBps e tem um desempenho de arquivo 4k muito melhor em comparação com cartões SD. A velocidade de busca também é boa. Mas usar o mesmo disco para operação simultânea de swap e OS gargalos. Como a troca faz gravações intensivas, o disco pode atingir o TBW (total de bytes gravados) mais cedo do que o esperado, especialmente em SSDs de baixa capacidade.

Idealmente, o Pi precisa que seu sistema operacional e swap estejam em unidades diferentes, um disco do sistema operacional e um SSD dedicado para troca. Isso daria longevidade para o disco do sistema operacional e velocidade para a troca. Além disso, a largura de banda estará disponível para ambos simultaneamente, pois são dispositivos diferentes.

Como configurar a troca em sistemas operacionais Raspberry Pi

A melhor forma de configurar isso depende de qual sistema operacional seu dispositivo está usando.

SO de desktop (Raspberry Pi OS, Ubuntu Desktop e Ubuntu Mate)

Conecte o SSD a ser usado como swap usando um Adaptador USB 3.0 para SATA III e inicie o Pi. O processo mostrado aqui é implementado no Raspberry Pi OS e deve funcionar igualmente bem nos outros sistemas operacionais. Em caso seu sistema operacional Raspberry Pi precisa ser atualizado, faça isso.

Instale a ferramenta necessária para gerenciar discos usando GUI

sudo apt instalar gnome-disk-utility

Abrir Discos a partir de Iniciar > Acessórios.

Você também pode usar este comando no terminal para abrir a ferramenta:

gnome-discos

Formate o SSD no menu.

Crie uma partição usando o controle com + símbolo

A partição inteira pode ser alocada para troca, mas um máximo de duas vezes a RAM seria suficiente.

Dê um nome ao volume e selecione Outro para o Tipo de partição.

Selecionar Trocar partição Linux e criá-lo.

Você pode montá-lo imediatamente clicando no botão de controle com o Toque símbolo. Ele será montado durante esta sessão, mas não permanecerá nas reinicializações. Ele deve ser configurado para ser montado automaticamente. Clique no Engrenagem controlar e selecionar Editar opções de montagem.

Alternar Padrões de sessão do usuário e clique OK. Authenticate e Disks adicionarão uma entrada ao /etc/fstab para montá-lo a cada inicialização.

Reinicie o Pi, abra o terminal e verifique o novo tamanho de troca:

livre -m

Configuração adicional apenas para Raspberry Pi OS

Agora que a troca está configurada em um SSD, a troca antiga não é necessária. Você pode desativá-lo editando:

sudo nano /etc/dphys-swapfile

Defina este parâmetro como zero:

CONF_SWAPSIZE=0

Sistema operacional do servidor (Ubuntu, sistema operacional Raspberry Pi)

Este processo é através do CLI. Para facilitar, você pode preparar a partição de troca usando a ferramenta Discos em outro computador, depois conectar o SSD ao Pi e inicializar o servidor. Conecte-se ao Pi usando SSH para prosseguir.

Encontre a partição swap:

lsblk

sda1 isso é. Encontre o UUID deste dispositivo: sda1

blkid

Copie o UUID (exclusivo para você) e edite o arquivo fstab para montá-lo automaticamente a cada inicialização:

sudo nano /etc/fstab

Adicione esta linha:

UUID=SEU UUID nenhum troca sw 0 0

Salve, reinicie e verifique o tamanho da troca:

livre -m

Otimizando o uso da memória virtual para operação à prova de falhas

A troca configurada deve ser bem utilizada. Isso é feito configurando um parâmetro chamado swappiness. Para encontrar o valor atual:

cat proc/sys/vm/swappiness

Definido como 60 por padrão, o valor define com que agressividade o kernel troca o conteúdo da RAM. Pode ser definido entre 1 e 100. O valor adequado depende de sua necessidade específica. Se você perceber que o Pi está ficando sem RAM consistentemente, defina-o como 100. Caso contrário, defina-o para um valor mais baixo. Edite este arquivo para configurá-lo:

sudo nano /etc/sysctl.conf

Adicione esta linha no final:

vm.swappiness=100

Advertências sobre sobrecarga de processamento e SSD TBW

A troca operacional requer poder de processamento, geralmente um dos quatro núcleos do Pi se dedica à troca quando a RAM está absolutamente cheia.

O conselho geral que circula por aí é não usar SSDs para troca, é verdade para o caso em que o sistema operacional (junto com os dados do usuário) e a troca estão no mesmo disco. Não se aplica neste caso quando a troca é configurada conforme explicado aqui. Embora o SSD usado acabe cruzando seu TBW e falhe, ele pode simplesmente ser substituído por um novo, pois não há dados importantes armazenados nele com esse processo.

Troque a vantagem pelo seu Pi

Configurar o swap certo é uma ótima maneira de tornar o Pi à prova de falhas. A estabilidade se deve ao fato de que a memória geral disponível é um fator mais significativo do que a velocidade da memória durante OOM. O Pi não congelará e, assim que o uso do pico cair, ele responderá mais rapidamente novamente.

Raspberry Pi é um computador minúsculo com grande flexibilidade. Ele pode ser usado para diferentes propósitos com vários sistemas operacionais leves. O Pi 4 serve bem como um substituto para computadores comuns e também um dispositivo embarcado para uso industrial que pode funcionar 24 horas por dia, 7 dias por semana.