- O zram cria dispositivos de bloco compactados na RAM que atuam como discos de troca ou ultrarrápidos, reduzindo os acessos ao disco e melhorando o desempenho.
- No Debian, Ubuntu e derivados, é fácil habilitar o zram com o zram-tools, ajustando o algoritmo de compressão e o tamanho de acordo com a RAM instalada.
- Ferramentas como zram-config ou zram-generator automatizam a criação de múltiplos dispositivos zram e sua integração com o systemd.
- A escolha entre percentagem ou tamanho fixo, e a priorização da zram em relação à troca de disco, permite uma configuração equilibrada e eficiente.

Se você usa GNU/Linux diariamente e se preocupa em obter o máximo desempenho do seu computador, isso pode ser útil.Cedo ou tarde, você vai se deparar com o conceito de zRAM. Muitos usuários com memória RAM limitada enfrentam travamentos, congelamentos ocasionais ou lentidão ao abrir vários aplicativos que consomem muitos recursos simultaneamente. Tradicionalmente, a solução envolvia o uso de uma partição de swap no disco rígido, mas hoje em dia existem alternativas muito mais rápidas e eficientes.
zram é uma dessas pequenas joias oferecidas pelo kernel do Linux.Ele permite criar dispositivos de bloco compactados diretamente na RAM para uso como uma área de troca ultrarrápida ou até mesmo como discos temporários. Quando configurado corretamente, pode fazer uma grande diferença tanto em sistemas modestos (4 a 8 GB de RAM) quanto em máquinas mais potentes com 16 ou 32 GB, reduzindo acessos ao disco, prevenindo travamentos e melhorando o desempenho geral do sistema.
O que é ZRAM e por que melhora o desempenho em comparação com uma troca clássica?
zram é um módulo do kernel Linux que cria dispositivos de bloco comprimidos na RAM.Em outras palavras, ele cria uma espécie de "disco virtual" na RAM, no qual um espaço de troca ou até mesmo um sistema de arquivos pode ser criado. Os dados gravados nesse dispositivo são compactados dinamicamente pela CPU e armazenados na memória, ocupando, portanto, menos espaço do que ocupariam sem a compactação.
A ideia principal é aproveitar o fato de que a RAM é muito mais rápida do que qualquer HDD ou SSD.Quando o sistema começa a ficar sem memória física, em vez de gravar as páginas de memória em um disco lento, ele as comprime em zRAM. Embora haja alguma perda de uso da CPU na compressão e descompressão, os ganhos em velocidade de acesso são mais do que compensados, e o desgaste do disco é reduzido, o que é especialmente importante para SSDs.
Esse mecanismo era originalmente conhecido como compcache.Com o tempo, evoluiu até ser integrado ao kernel sob o nome atual, zram. Hoje, é considerado uma alternativa muito séria (e em muitas distribuições, a opção preferida) à tradicional partição de swap que vimos no Linux por décadas.
Uma vantagem prática muito clara é a melhoria do desempenho em situações "extremas".Por exemplo, foi testado em laptops com Fedora que, ao trocar a memória swap do disco para swap via zRAM, certos jogos exigentes rodando com Proton (como Doom 2016) passaram de meros 6-7 fps para cerca de 20 fps no mesmo hardware, simplesmente alterando a estratégia de swap. Não é mágica; é simplesmente que a memória swap não está mais em um disco relativamente lento, mas sim em RAM comprimida.
Essa abordagem também traz benefícios em computadores modernos com bastante memória.Embora você possa pensar que com 16 ou 32 GB de RAM não precisa de swap, a verdade é que ter um buffer compactado no zram pode ajudar a manter a fluidez ao abrir navegadores com dezenas de abas, máquinas virtuais, editores pesados ou jogos, evitando que o sistema comece a encerrar processos ou a apresentar travamentos.
Onde o zram é usado atualmente e quais distribuições já o incluem ou facilitam seu uso?
Muitas distribuições têm demonstrado um forte compromisso com o zram como substituto ou complemento ao swap clássico.Um dos exemplos mais conhecidos é o Fedora, que decidiu priorizar a memória swap em relação à zRAM por padrão, em vez de depender exclusivamente de uma partição de swap no disco. Essa mudança melhorou significativamente a experiência em laptops e desktops com memória limitada.
No mundo Debian e Ubuntu, a abordagem tem mudado ao longo dos anos.O Debian 10 (Buster) e o Debian 11 (Bullseye), assim como o Ubuntu 20.04 LTS e versões posteriores, permitem configurar facilmente o zram usando pacotes específicos (como zram-tools ou zram-generator). Além disso, o Ubuntu normalmente usa um arquivo de swap no disco em vez de uma partição dedicada, o que simplifica bastante a desativação desse espaço de swap caso você decida usar o zram.
Outras distribuições até incorporaram o zram em seus instaladores.O Arch Linux, por exemplo, oferece a opção de habilitar o zram diretamente a partir de seu instalador guiado, o archinstall. Basta selecionar a opção correspondente para configurar o sistema com swap em vez de zram, usando parâmetros padrão bastante razoáveis, que alguns usuários até utilizam como referência para ajustar seus próprios sistemas.
Além dos computadores pessoais, o zram também é usado em dispositivos móveis e sistemas embarcados.O Android e o Ubuntu Touch aproveitam isso para ganhar espaço em smartphones com memória limitada: a RAM é um recurso muito valioso, e a capacidade de comprimir partes do seu conteúdo permite executar aplicativos mais exigentes do que a memória física bruta permitiria. Algumas distribuições desktop leves também incluem esse recurso por padrão.
Em sistemas com bastante memória RAM, como PCs de mesa ou mini PCs com 16 a 32 GB.Está se tornando cada vez mais comum não criar uma partição de swap durante a instalação e usar apenas o zram como mecanismo de swap compactado. Isso mantém o sistema funcionando sem problemas, sem a necessidade de reservar espaço em disco para swap, que, em muitos casos, é raramente usado.
Conceitos básicos: swap, dispositivos de bloco e discos virtuais na RAM.
Para entender completamente o que o zram faz, é útil revisar dois conceitos: swap e dispositivos de bloco.No GNU/Linux, "quase tudo é um arquivo", e os dispositivos de hardware não são exceção: eles são representados como arquivos especiais dentro de /dev. Um disco rígido, um SSD, um cartão SD ou um pen drive USB aparecem como dispositivos de bloco que o sistema acessa com a mesma interface, mesmo que usem tecnologias subjacentes diferentes.
Um dispositivo de bloco pode conter um sistema de arquivos tradicional., como ext4, XFS, btrfs, etc., e podem ser montados em um ponto de montagem para acesso normal do usuário. No entanto, essa abstração também permite a criação de dispositivos de bloco que não estão associados a nenhum hardware físico, como discos RAM. Essas são áreas de memória RAM que o sistema expõe como se fossem "discos" e que podem ser formatadas e montadas como qualquer outra unidade.
Por outro lado, a área de swap é a área utilizada pela memória virtual do sistema quando a RAM se esgota.Tradicionalmente, o espaço de swap reside em um disco (em uma partição ou arquivo). Quando o kernel precisa liberar RAM, ele move páginas de memória menos ativas para essa área de swap. O problema é que o acesso ao disco é ordens de magnitude mais lento do que o acesso à RAM, e é por isso que, quando um sistema começa a usar a memória de swap de forma agressiva, uma lentidão muito perceptível se torna evidente.
A ideia por trás do zram é combinar o melhor dos dois mundos.Isso envolve a criação de um dispositivo de bloco "falso" dentro da RAM e a compressão dos dados gravados nele. Isso produz um efeito semelhante ao de ter mais memória disponível (porque os dados comprimidos ocupam menos espaço) praticamente na mesma velocidade da RAM, já que o gargalo passa a ser a CPU em vez do disco. Isso é especialmente útil em sistemas com uma CPU decente, onde o custo da compressão e descompressão é muito gerenciável.
Além disso, outra clara vantagem é que a memória RAM não se desgasta.Utilizar a memória swap em um SSD envolve escrita constante em uma mídia de armazenamento com vida útil limitada; com o zram, toda a troca de dados ocorre dentro da memória, sem danificar os discos ou exigir espaço dedicado em disco. É por isso que cada vez mais usuários com laptops e SSDs preferem configurar a troca de dados no zram e, em muitos casos, desativar completamente a troca de dados em disco.
Algoritmos de compressão em zram: lz4, zstd, lzo e similares
Em geral, a seguinte ordem de execução costuma ser aceita.Em termos de velocidade pura de compressão e descompressão, o lz4 geralmente é o mais rápido, seguido pelo zstd e, por último, pelo lzo. Quanto à taxa de compressão (ou seja, o quanto ele reduz o tamanho dos dados), o zstd geralmente leva a melhor, seguido pelo lzo e, por último, pelo lz4. Isso significa que o zstd comprime mais, mas é um pouco mais lento que o lz4, enquanto o lz4 sacrifica a taxa de compressão em prol de um desempenho extremamente rápido.
Em muitos cenários de desktop, o zstd oferece um excelente equilíbrio.Ele comprime melhor que o lz4 (assim, "aproveitando" mais a RAM) e geralmente é rápido o suficiente em máquinas modernas. Por esse motivo, alguns administradores e usuários avançados recomendam configurar o zram para usar o zstd como algoritmo principal, a menos que o hardware seja muito limitado pela CPU e cada ciclo conte.
Os algoritmos disponíveis e selecionados podem ser visualizados dentro do próprio sistema. Quando o módulo zram é carregado, basta verificar o conteúdo de /sys/block/zram0/comp_algorithm para ver quais algoritmos o kernel suporta atualmente e qual deles está ativo. Essa informação também está comentada em alguns arquivos de configuração de ferramentas como o zram-tools.
Em qualquer caso, a escolha do algoritmo geralmente não requer mudanças frequentes.A abordagem usual é selecionar um (por exemplo, zstd ou lz4), deixá-lo como padrão nas configurações e, se você for particularmente meticuloso, executar alguns testes de desempenho em seu sistema específico. A maioria dos usuários notará uma melhora clara simplesmente habilitando o zram, independentemente de quaisquer diferenças sutis entre os algoritmos.
Habilite o zram no Debian, Ubuntu e derivados com o zram-tools.
No Debian, Ubuntu e em muitos derivados baseados em APT, a maneira mais fácil de habilitar o zram é usando o pacote zram-tools.Este pacote fornece um serviço e um arquivo de configuração central que permitem definir facilmente como o zram será usado como swap. É um método testado e comprovado, bastante padrão, que funciona bem no Debian 10, Debian 11, Ubuntu 20.04, Ubuntu 22.04 e versões próximas.
O primeiro passo é instalar o pacote correspondente a partir do terminal.usando sudo ou a conta root. O comando típico nessas distribuições seria:
sudo apt install zram-tools
Após a instalação do zram-tools, o arquivo de chave é /etc/default/zramswapÉ aqui que parâmetros como o algoritmo de compressão, o tamanho total do zram e sua prioridade sobre outras memórias de troca são definidos. Se você reiniciar sem alterar nada, o sistema geralmente cria uma pequena quantidade de zram por padrão (por exemplo, 250 MiB), o que muitas vezes é insuficiente para o uso prático em desktops atualmente.
Para ajustar as configurações às suas necessidades, você precisa editar esse arquivo com seu editor de texto preferido.Quem prefere um ambiente gráfico pode usar algo como o Geany com sudo, enquanto quem prefere o console geralmente usa o nano ou similar. Por exemplo:
sudo nano /etc/default/zramswap
Neste arquivo você encontrará diversas seções anotadas. Essas informações explicam as opções disponíveis. Geralmente há uma seção sobre o algoritmo de compressão, outra sobre a porcentagem de RAM a ser dedicada ao zram, outra para definir um tamanho estático em MiB e uma opção de prioridade para a troca de memória (swap). O formato pode variar ligeiramente entre as versões, mas o conceito subjacente é o mesmo.
Ajuste o algoritmo e o tamanho do espaço de troca (swap) na memória zram de acordo com a memória RAM do computador.
Um dos ajustes mais importantes é a seleção do algoritmo de compressão apropriado.Em zram-tools, geralmente há uma linha como ALGO= que está comentada ou possui um valor padrão (geralmente lz4). Se você quiser aproveitar melhor sua RAM e seu processador não for extremamente limitado, você pode alterá-la para usar zstd, resultando em algo como:
ALGO=zstd
O segundo parâmetro principal é quanto espaço alocar para zram.Existem duas estratégias comuns: configurar uma porcentagem da RAM total ou definir uma quantidade específica em MiB. Alguns exemplos usam variáveis como PERCENT ou PERCENTAGE para definir uma porcentagem (por exemplo, 50 para metade da RAM), enquanto outras versões do arquivo expõem uma variável como SIZE ou ALLOCATION para indicar um tamanho fixo.
Se optar por uma porcentagem, uma configuração muito comum em sistemas com 4 a 8 GB de RAM é alocar cerca de 50 a 70% da memória. um zram. Por exemplo:
POR CENTO = 50
Ou em algumas variações de configuração: PERCENTAGE=50. Dessa forma, em um computador com 8 GB de RAM, seriam criados aproximadamente 4 GB de swap compactados em zram, o que geralmente é suficiente para a maioria dos desktops e evita chegar muito perto dos limites físicos.
Em máquinas com bastante RAM, geralmente é mais sensato definir um tamanho estático.Em vez de permitir que uma porcentagem muito alta gere zram desproporcional, podem ser usados valores como SIZE ou ALLOCATION em MiB. Alguns administradores recomendam, por exemplo, 4096 MiB (4 GiB) de zram para sistemas com mais de 8 GB de RAM e 8192 MiB (8 GiB) para sistemas com mais de 16 GB, deixando a memória restante sem compressão.
Um exemplo prático em um computador com 32 GB poderia ser: ALGO=zstd e SIZE=4096, que reserva 4 GB de swap no zram usando zstd. Alguns usuários usam o instalador archinstall do Arch Linux para máquinas de 32 GB como referência, que geralmente aloca cerca de 4 GB de zram; outros preferem usar até 8 GB se executarem muitas máquinas virtuais ou contêineres grandes.
Este arquivo de configuração geralmente inclui comentários bastante detalhados. Com relação às opções disponíveis e às referências à documentação oficial do kernel, é uma boa ideia ler atentamente os comentários para entender a função de cada variável. Se você não tiver certeza sobre qual valor definir, aja com cautela: é melhor começar com 4 GB e aumentar posteriormente do que ir direto para tamanhos excessivamente grandes que podem deixar você sem RAM suficiente caso a compressão não consiga reduzir os dados significativamente.
Gerenciamento do espaço de troca de disco existente e das prioridades de troca.
Ao ativar o zram, é importante verificar qual swap de disco você definiu.Muitas instalações do Debian e do Ubuntu criam uma partição de swap durante a instalação ou, em versões mais recentes do Ubuntu, um arquivo de swap no sistema de arquivos raiz. Se você não desativar essas partições, acabará com swap compactado na RAM e swap no disco, e o kernel decidirá qual usar com base em suas prioridades.
Em computadores com muita memória RAM (por exemplo, 16 ou 32 GB), muitos usuários optam por desativar completamente a partição ou o arquivo de disco de swap.Nesses casos, eles dependem exclusivamente do zram para a troca de memória, o que evita acessos lentos ao disco e reduz o desgaste dos SSDs. Se o seu sistema Debian ou Ubuntu não criou uma partição de swap no disco (por exemplo, porque você a omitiu durante a instalação), você não precisa mexer em nada no arquivo /etc/fstab.
Se você tiver uma partição de swap, poderá desativá-la editando o arquivo /etc/fstab. e comentando na linha correspondente ao ponto de montagem dessa troca. O procedimento típico seria:
sudo nano / etc / fstab
Localize a linha que se refere à partição de swap. (geralmente com tipo de swap) e comente-o adicionando um # no início. Após salvar as alterações e reiniciar, o sistema não montará mais esse disco de swap e se concentrará no zram. Como regra geral, em sistemas com apenas 4 GB de RAM, pode ser uma boa ideia manter o disco de swap como um backup adicional, enquanto a partir de 6-8 GB você pode se virar muito bem apenas com o zram.
No próprio arquivo de configuração do zram, você também pode ajustar a prioridade do dispositivo.Isso é feito usando uma opção como PRIORITY. O comando swapon permite atribuir prioridades numéricas a cada área de swap; quanto maior o número, mais cedo o kernel usará esse swap. Faz sentido atribuir à zram uma prioridade maior do que a qualquer swap no HDD ou SSD, garantindo que o swap rápido na RAM seja esgotado primeiro e, somente se necessário, o swap do disco seja utilizado.
Se, a qualquer momento, você quiser verificar qual swap está ativo e em que ordem ele está sendo usado,Você pode usar `swapon --show`. Este comando exibirá uma tabela mostrando os dispositivos de swap, seus tamanhos, uso atual e prioridade. É uma maneira rápida de confirmar se sua configuração de zram está funcionando conforme o esperado e se o sistema está realmente aproveitando-a.
Utilizando zram como um disco RAM comprimido com o gerador zram do systemd
Além do zram-tools, em sistemas modernos com systemd existe outra opção muito poderosa: o zram-generator.Este pacote permite definir dispositivos zram usando arquivos de configuração em /etc/systemd, com flexibilidade suficiente para usá-los como discos de swap e discos de uso geral formatados com sistemas de arquivos como o ext4.
O arquivo de configuração principal geralmente é /etc/systemd/zram-generator.confEm muitas instalações, ele não existe por padrão, então você precisará criá-lo manualmente. Alternativamente, você pode configurar uma estrutura em /etc/systemd/zram-generator.conf.d/ com um ou mais arquivos *.conf que atuam como "trechos" de configuração e sobrescrevem partes do arquivo principal, caso ele exista.
A sintaxe é baseada em seções com nomes como , , etc. A numeração começa em 0, definindo assim o primeiro dispositivo, o segundo e assim por diante. Dentro de cada seção, parâmetros semelhantes aos encontrados no zram-tools podem ser configurados, mas com algumas opções adicionais específicas para o systemd e o uso de disco.
Entre as opções mais interessantes está o algoritmo de compressão.Isso permite que você escolha o algoritmo de compressão (por exemplo, zstd, lz4, lzo-rle, etc.). Se não for especificado, o sistema usará o padrão do kernel, que em muitos casos é lzo-rle. Há também uma diretiva `options` para passar parâmetros de montagem ou de troca de memória, como `discard`, que faz com que as páginas comprimidas não utilizadas sejam descartadas durante a execução, otimizando o gerenciamento de memória.
Outra diretiva relevante é writeback-deviceProjetada para cenários avançados, esta opção permite designar um dispositivo para armazenar páginas que não podem ser compactadas de forma eficaz, descarregando-as da zram. Essa configuração é menos comum em computadores desktop, mas pode ser útil em ambientes com recursos limitados, onde se deseja combinar memória compactada e armazenamento de backup.
Se você deseja usar o zram como um disco RAM compactado, o tipo de sistema de arquivos e o ponto de montagem entram em jogo.Com `fs-type` você define o sistema de arquivos (por exemplo, ext4) e com `mount-point` o diretório onde o dispositivo zram será montado. Isso permite, por exemplo, montar um diretório temporário ultrarrápido e compactado na RAM, útil para compilações complexas, processamento de dados temporários ou cache de aplicativos.
É possível combinar usos no mesmo dispositivo criando vários dispositivos zram.zram0 como swap e zram1 como um disco montado com ext4. Em alguns exemplos práticos, configura-se, por exemplo, que zram0 só seja criado se o sistema tiver mais do que uma certa quantidade de RAM (por exemplo, 9 GB) e que cada dispositivo possa usar até 2 GB de memória física, ajustando assim o consumo máximo de zram e evitando que ele consuma muita RAM caso a compressão não seja tão eficaz quanto o esperado.
Verificações práticas e comportamento automático do zram-config
Algumas ferramentas, como o zram-config (usado em certas distribuições derivadas do Ubuntu), automatizam grande parte da configuração.Uma vez instalado, este pacote cria e configura o zram por padrão, exigindo intervenção mínima do usuário. Após a reinicialização, o sistema inicia com os dispositivos zram prontos para uso como swaps de alta prioridade.
Uma das estratégias comuns dessas configurações automáticas é criar um dispositivo zram para cada núcleo da CPU.Isso permite que a carga de compressão e descompressão seja distribuída entre várias threads, aproveitando melhor os processadores multi-core. Em um sistema quad-core, por exemplo, você veria quatro dispositivos zram (zram0, zram1, zram2, zram3) de tamanhos semelhantes que o kernel pode usar em paralelo.
O tamanho total combinado da zram geralmente é definido em cerca de metade da RAM física.Assim, em uma máquina com 8 GB de RAM, as configurações padrão poderiam gerar cerca de 4 GB de zRAM distribuídos entre os diversos dispositivos. Essa quantidade geralmente proporciona um bom equilíbrio entre aproveitar a compressão e não deixar o sistema sem espaço suficiente para processos que não comprimem bem.
A prioridade atribuída a esses dispositivos zram geralmente é maior do que a da troca de disco.Isso garante que o sistema usará primeiro o espaço de troca (swap) da RAM compactada e só recorrerá ao disco como último recurso. Essa preferência pode ser verificada com `swapon --show`, onde você verá as prioridades numéricas e poderá confirmar que o zram tem precedência sobre o arquivo de troca (swapfile) ou a partição de troca (swap) tradicionais.
Para verificar a configuração exata e o uso real do zram, existem vários comandos úteis.Por exemplo, `cat /proc/swaps` exibe todas as áreas de swap ativas, incluindo zram, seus tamanhos e a quantidade que está sendo usada. Você também pode inspecionar `/sys/block/zram*/` para obter estatísticas detalhadas e parâmetros avançados, como o algoritmo de compressão atual ou a quantidade de memória física consumida em relação à alocada logicamente.
Na prática, uma vez que o zram esteja configurado corretamente, o usuário geralmente não precisa intervir.O sistema operacional decide quais páginas são movidas para a zRAM, quando compactá-las e quando liberá-las. O que você notará, se usar programas que consomem muitos recursos ou abrir muitos aplicativos, é que o computador terá um desempenho melhor antes de começar a ficar lento ou fechar processos por falta de memória.
Configurar a troca (swap) sobre zram no Linux permite que você aproveite ainda melhor a memória disponível.Reduza os acessos ao disco e melhore a fluidez geral do sistema, seja em um laptop com 4 a 8 GB de RAM ou em um desktop com 32 GB; ao entender as opções de tamanho, algoritmo e prioridade, você pode ajustar essa funcionalidade ao seu gosto e aproveitá-la ao máximo sem complicar sua vida.
Escritor apaixonado pelo mundo dos bytes e da tecnologia em geral. Adoro compartilhar meu conhecimento por meio da escrita, e é isso que farei neste blog, mostrar a vocês tudo o que há de mais interessante sobre gadgets, software, hardware, tendências tecnológicas e muito mais. Meu objetivo é ajudá-lo a navegar no mundo digital de uma forma simples e divertida.
