zram, antigamente chamado compcache, é um módulo do kernel do Linux para criar um dispositivo de bloco compactado na RAM, ou seja, um disco RAM, mas com uma compressão de "disco" dinâmica. O dispositivo de bloco criado com o zram pode ser usado para troca ou como disco RAM de propósito geral. Os dois usos mais comuns para o zram são para o armazenamento de arquivos temporários (/tmp) e como um "disco" de troca. Inicialmente, o zram tinha apenas a última função, daí o nome original "compcache" ("compressed cache").
Módulo do núcleo Linux
Após quatro anos na área de drivers experimentais do Linux, o zram foi introduzido no kernel Linux na versão 3.14, lançado em 30 de março de 2014.[1] Do kernel Linux versão 3.15 em diante (lançado em 8 de junho de 2014), o zram suporta múltiplos fluxos de compressão e vários algoritmos de compactação. Algoritmos de compressão incluem DEFLATE (DEFLATE), LZ4 (LZ4 e LZ4HC "high compression"), LZO (LZO-RLE "run-length encoding"),[2]Zstandard (ZSTD) e 842 (842). A partir do kernel 5.1, o padrão é LZO-RLE,[2] que tem um equilíbrio entre velocidade e taxa de compressão. Como a maioria dos outros parâmetros do sistema, o algoritmo de compactação pode ser selecionado via sysfs.[3]
Quando usado como um espaço de troca compactado, o zram é semelhante ao zswap, que não é um disco RAM de propósito geral, mas sim um cache compactado no kernel para páginas de troca. Até a introdução de CONFIG_ZRAM_WRITEBACK no kernel versão 4.14, ao contrário do zswap, o zram não podia usar um disco rígido como armazenamento de apoio, portanto, não podia mover páginas usadas com menos frequência para o disco. Por outro lado, o zswap requer um armazenamento de apoio, enquanto o zram não.
Quando usado para swap, o zram (como zswap também) permite ao Linux fazer uso mais eficiente da RAM, já que o sistema operacional pode conter mais páginas de memória no swap compactado do que se a mesma quantidade de RAM tivesse sido usada como memória de aplicativo ou cache de disco. Isso é particularmente eficaz em máquinas que não possuem muita memória.[4][5] Em 2012, o Ubuntu considerou brevemente habilitar o zram por padrão em computadores com pequenas quantidades de RAM instalada.[6]
Um espaço de troca compactado com o zram/zswap também oferece vantagens para dispositivos de hardware de baixo custo, como dispositivos embarcados e netbooks. Esses dispositivos geralmente usam armazenamentobaseado em flash, que tem vida útil limitada devido à amplificação de gravação e também o utiliza para fornecer espaço de troca. A redução no uso do arquivo/partição de troca como resultado do uso do zram reduz efetivamente a quantidade de desgaste colocado em tal armazenamento baseado em flash, resultando no prolongamento de sua vida útil. Além disso, o uso do zram resulta em uma E/S significativamente reduzida para sistemas Linux que exigem troca.[7][8]
O Chrome OS, do Google, usa o zram por padrão desde 2013.[9] O Android inclui o zram desde a versão 4.4.[10] O Lubuntu também começou a usar o zram em sua versão 13.10.[11]