CRAM, da Meta, pode deixar memória comprimida do Linux até 452x mais rápida
Técnica mostrada na Linux Plumbers trata dados comprimidos como RAM e deixa o ZRAM comendo poeira
A Meta quer resolver um problema antigo de quem depende de memória comprimida no Linux: a lentidão. Durante a Linux Plumbers Conference, realizada em Praga, o engenheiro Gregory Price e sua equipe apresentaram o CRAM, uma abordagem que mantém os dados comprimidos dentro da própria RAM e deixa o kernel tratá-los como memória comum, sem passar pela camada de swap.
Nos testes mostrados na palestra, o ganho em leitura impressiona: o CRAM chegou a 489 milhões de operações por segundo, contra cerca de 1,1 milhão do ZRAM. É dessa conta que sai o número que chamou atenção, um desempenho até 452 vezes maior em leituras puras.
Por que o ZRAM fica para trás
Hoje, quem quer espremer mais memória de um PC ou servidor Linux costuma recorrer ao ZRAM ou ao zswap. Os dois funcionam como uma espécie de swap turbinado: as páginas são comprimidas e guardadas na RAM, mas toda vez que o sistema precisa acessar esses dados acontece uma falha de página (page fault), e o kernel tem que descomprimir tudo antes de liberar o acesso.
O CRAM muda a lógica. Em vez de se apresentar como um dispositivo de bloco, ele aparece para o kernel como um nó NUMA privado. Na prática, o Linux passa a lidar com a memória comprimida usando suas regras normais de gerenciamento, incluindo migração de páginas e ballooning, e consegue ler os dados por linha de cache ou até por byte, pagando apenas o custo da descompressão feita em hardware.

Escrita ainda é o ponto fraco
Nem tudo são flores. Quando entram operações de escrita, a vantagem encolhe bastante, porque gravar dados exige uma falha de página e a migração da informação de volta ao nó NUMA original. No pior cenário testado, com 20% de escritas, o CRAM ficou "só" 5,4 vezes à frente do ZRAM, o que ainda é um salto considerável.
Para evitar que o sistema desande quando as gravações chegam mais rápido do que a capacidade de alocação, a equipe criou um mecanismo apelidado de "chicken bit". Ele avisa o kernel para parar de usar o CRAM enquanto reorganiza as alocações, impedindo uma reação em cadeia de falhas que os slides chamam de "poison storm".
Também segue em aberto como medir a capacidade efetiva dessa memória, já que a compressão varia conforme o tipo de dado.
Quando chega ao seu PC?
Por enquanto, não há previsão. O CRAM ainda não faz parte do kernel principal (mainline) e não existe cronograma anunciado para a inclusão. A tendência é que os data centers sejam os primeiros a se beneficiar, mas com a RAM cada vez mais cara a novidade promete chamar atenção também fora dos servidores.
Fonte: Linux Plumbers Conference