Jump to content
From ArchWiki
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 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 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:

1. Adicione os módulos relacionados ao compressor escolhido ao array mkinitcpio (Português)#MODULES.
2. Gere novamente os ambientes ramdisk após modificar a configuração do mkinitcpio: consulte mkinitcpio (Português)#Criação e ativação de imagem.
3. 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.

Category:

- Kernel (Português)