Zswap (Português)

Status de tradução:
Esse artigo é uma tradução de
Zswap
. Data da última tradução: 2022-11-20. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Parâmetros do kernel
Mkinitcpio
Zswap
É um recurso do kernel que fornece um cache de RAM compactado para páginas de troca.  As páginas que, de outra forma, seriam trocadas para o disco são compactadas e armazenadas em um pool de memória na RAM.  Quando o pool estiver cheio ou a RAM esgotada, o menos usado recentemente (
LRU
) a página é descompactada e gravada no disco, como se não tivesse sido interceptada.  Após a página ser descompactada no cache de troca, a versão compactada no pool pode ser liberada.
A diferença em comparação com
ZRAM
é que o zswap funciona em conjunto com um
swap
dispositivo enquanto
zram
é um dispositivo de troca na RAM que não requer um dispositivo de troca de apoio.
Alternando zswap
No pacote de kernel estável oficial
linux
, zswap é habilitado por padrão. Isso pode ser verificado através do sinalizador
CONFIG_ZSWAP_DEFAULT_ON
na
configuração do kernel estável
.
Para desativar zswap em tempo de execução, execute o seguinte comando:
# echo 0 > /sys/module/zswap/parameters/enabled
Para desativar zswap permanentemente, adicione
zswap.enabled=0
aos seus
parâmetros do kernel
.
Dica
como Alternativa, você pode usar
systemd-swap
AUR
que é um script para gerenciar permuta espaços com um arquivo de configuração
/etc/systemd/swap.conf
. Neste caso, você deve
iniciar/habilitar
systemd-swap.service
.
Personalizando zswap
Parâmetros atuais
Zswap tem vários parâmetros personalizáveis. As configurações podem ser exibidos usando:
$ grep -R . /sys/module/zswap/parameters
/sys/module/zswap/parameters/same_filled_pages_enabled:Y
/sys/module/zswap/parameters/enabled:Y
/sys/module/zswap/parameters/max_pool_percent:20
/sys/module/zswap/parameters/compressor:lz4
/sys/module/zswap/parameters/zpool:z3fold
/sys/module/zswap/parameters/accept_threshold_percent:90
Veja a
documentação do zswap
para a descrição dos diferentes parâmetros.
A mensagem de carregamento do tempo de inicialização mostrando a configuração inicial pode ser recuperada com:
# dmesg | grep zswap:
[    0.317569] zswap: loaded using pool lz4/z3fold
Definir parâmetros
Usando sysfs
Cada configuração pode ser alterada em tempo de execução através do
sysfs
interface. Por exemplo, para alterar o
compressor
use o parâmetro:
# echo lz4 > /sys/module/zswap/parameters/compressor
Usando parâmetros de inicialização do kernel
Para manter a alteração de parâmetro, a opção correspondente, por exemplo
zswap.compressor=lz4
, deve ser adicionado para a inicialização do kernel. Portanto, para definir permanentemente todas as definições acima, os seguintes
parâmetros do kernel
devem ser adicionados:
zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 zswap.zpool=z3fold
Quando alterar o algoritmo de compressão através do parâmetro de arranque, o que precisa para garantir o correspondente compressão módulo é carregado no início durante a inicialização (confira o
#Algoritmo de compressão
).
Usando systemd-swap
Para aqueles que estão usando o script
systemd-swap
que modifica os parâmetros
sysfs
em uma fase posterior do processo de arranque com base na sua
configuração
armazenada em
/etc/systemd/swap.conf
.
Tamanho máximo do pool
O pool de memória não é pré-alocado, ele pode crescer até um certo limite, em porcentagem da memória total disponível, por padrão até 20% do total de RAM. Uma vez que este limite é atingido, as páginas são expulsas do pool no dispositivo swap. O máximo comprimidos de pool de tamanho é controlado com o parâmetro
max_pool_percent
.
Alocador de pull de memória comprimida
O parâmetro
zpool
controla a gestão do comprimido de memória de pool.
Com o alocador de dados
zbud
, 2 objetos comprimidos são armazenadas em 1 página, o que limita a taxa de compressão de 2 ou menos.
O alocador superior
z3fold
[
link inativo
2025-08-16 ⓘ]
permite que até 3 comprimidos de objetos por página. A taxa de compressão com
z3fold
normalmente é em média 2,7 enquanto é de 1,7 para o
zbud
.
Um
zpool
do tipo
z3fold
é criado por padrão. Use o parâmetro do kernel
zswap.zpool
para selecionar outro método no momento da inicialização. O alocador de dados também pode ser alterado posteriormente por meio da interface
sysfs
.
Algoritmo de compressão
Para compressão de página, o zswap usa módulos compactadores fornecidos pela API criptográfica do kernel. Ele usa por padrão o algoritmo de compressão
lz4
, mas isso pode ser alterado com
zswap.compressor
no momento da inicialização. Outras opções incluem
deflate
,
lz4hc
,
lzo
,
lzo-rle
,
842
e
zstd
.
Não há problema em alterar a compressão em tempo de execução usando
sysfs
ou via
systemd-swap
, mas o zswap começa neste caso com
lz4
e muda em um estágio posterior para o algoritmo definido. Para iniciar o zswap com outro algoritmo imediatamente, isso deve ser definido por meio dos parâmetros de inicialização do kernel e o módulo correspondente deve ser carregado antecipadamente pelo kernel. Isso pode ser alcançado seguindo estas etapas:
Adicione os módulos relacionados ao compressor escolhido ao array
mkinitcpio (Português)#MODULES
.
Gere novamente os ambientes ramdisk após modificar a configuração do mkinitcpio: consulte
mkinitcpio (Português)#Criação e ativação de imagem
.
Defina
zswap.compressor
ao seu algoritmo escolhido nos
parâmetros do kernel
.
Na próxima inicialização, consulte
#Parâmetros atuais
para verificar se zswap agora usa o compressor solicitado.
Veja também
zswap: Como determinar se está comprimindo páginas de troca?
.
IBM Support Article "New Linux zswap compression functionality" (Imagens de benchmark não carregam)
.
Ask Ubuntu: zram vs. zswap vs. zcache
.
Tópico no fórum do Arch Linux
.
Artigo técnico da LWN.net pelo desenvolvedor principal do zswap
.