05 out 2026 · memória · 2 min
zram num servidor de 5,8 GB: resultado da medição
A máquina tem 5,8 GB de memória e roda painel de implantação, banco de dados, proxy reverso, serviços internos e ferramentas de desenvolvimento. O conjunto não cabe todo em memória, e o swap fica em um dispositivo comprimido (zram), que guarda páginas pouco usadas ocupando uma fração da memória.
Estado antes do teste
páginas no zram ...... 3,7 GiB
comprimidas .......... 780 MiB, ocupando 835 MiB de RAM (4,8:1)
RAM disponível ....... 1,1 GiB
pressão (PSI full) ... avg10 0,4%, sem bloqueio relevante
Os 3,7 GiB de swap custavam 835 MiB de memória real. Sem eles, as mesmas páginas teriam que caber nos 5,8 GB, e não caberiam.
Método
Comparei dois valores de vm.swappiness, o parâmetro que define a preferência entre comprimir memória anônima e descartar cache. A carga foi a mesma nas duas séries: alocar 1 GB de memória anônima em passos de 128 MB, manter por 45 segundos e liberar. Duas execuções por valor, para separar variação normal de efeito.
O que separa os dois casos não é a quantidade de swap usada, mas qual tipo de página o núcleo descarta quando falta memória.
| métrica | swappiness 150 | swappiness 60 |
|---|---|---|
| anônimo : arquivo descartado | 3,1 : 1 | 1 : 32 |
| cache durante a carga | 545 a 660 MB | 208 para 73 MB |
| memória disponível | cerca de 500 MB | 0 MB |
| bloqueio (PSI full) | 3,4 a 5,4 ms | 8,7 a 35,8 ms |
| swap devolvido ao liberar | cerca de 780 MB | nada |
Resultado
Com swappiness 60, o núcleo descartou cache de disco em vez de comprimir páginas pouco usadas. O cache caiu de 208 MB para 73 MB durante a carga, o tempo de bloqueio passou de cerca de 4 ms para até 35 ms, e o swap não foi devolvido ao final. A memória disponível chegou a zero.
Com swappiness 150, o mesmo pico custou de 3,4 ms a 5,4 ms de bloqueio, o cache ficou entre 545 MB e 660 MB, e cerca de 780 MB voltaram para a memória quando a carga terminou.
Conclusão
Neste servidor, swappiness 150 reduz o tempo de bloqueio e preserva o cache. O valor 60 não devolveu memória: trocou a compressão de páginas pouco usadas pela perda de cache.
O parâmetro não era a causa do problema de memória da máquina. A carga vinha de processos de desenvolvimento executados no mesmo servidor, e foi resolvida separadamente.