Colocando limites de memória em serviços systemd — Raspberry Pi

Edjalmo Bf
Feb 27 · 2 min read

O Raspberry Pi é ótimo! Não conheço outro computador que ofereça tanto por tão pouco dinheiro.

Mas por ser barato existem limitações. O 1gb de memória RAM é uma delas. Se você usa programas como o Sonarr, Radarr, Jackett (principalmente) já deve ter notado que eles usam bastante memória, o que acaba muitas vezes congelando o sistema.

A boa notícia é que existem uma maneira de contornar isso: colocando um limite de memória! Vamos aprender como fazer isso.

O sistema que usaremos como base para demostrar isso é o LibreELEC, uma distro Linux suficiente ("Just enough OS") para rodar o Kodi.

Antes precisamos habilitar esse tipo de limite nas configurações do sistema (acho que em todas distros feitas para o Raspberry Pi isso é necessário, mas não tenho certeza). Para fazer isso basta fazer os passos a seguir:

mount -o remount,rw /flash #deixar a pasta flash em modo escrita
nano /flash/cmdline.txt #para abrir o editor
#Só o que você precisa fazer é colocar "cgroup_enable=memory" dentro, sem as aspas, no final da linha que já existe
Ctrl + X para sair e Y para salvar
mount -o remount,ro /flash #deixar a pasta em somente leitura novamente
Reboot #para reiniciar o sistema

Para colocarmos o limite num programa que roda através de systemd basta somente adicionar dois parâmetros na aba [Service] no arquivo .service do programa. Os parâmetros são MemoryHigh= e MemoryMax=, com os valores desejados de limite.

O programa pode ultrapassar o limite imposto em MemoryHigh, mas ele ficará mais lento e tentara voltar ao limite, diferente do MemoryMax. O limite de MemoryMax é o absoluto, ultrapassado esse limite o programa é reiniciado.

Um exemplo (o que uso no Sonarr/Radarr/Jackett):

[Service]
MemoryHigh=125M
MemoryMax=150M

Para testar basta digitar systemctl status oSeuServico.service e verificar se o campo Memory aparece.

Simple, não?!

Referência:

Systemd Resource Control: https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html

Dados insuficientes para uma resposta significativa.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade