O problema
4 GB de RAM (memória física) e que você tenha 2 dispositivos zram de no máximo 2.025.976 kB (aproximadamente 2 GB cada). zram está usando a memória disponível, eu não sei exatamente o interno mas qualquer que seja o mecanismo eu posso imaginar claramente um cenário onde a página do Linux (= colocar alguma memória da RAM para zram) para obter mais espaço livre mas então o uso do zram na memória está crescendo, por isso, sairia mais, o que resultaria em um aumento adicional do uso do zram, e assim por diante, até que o zram esteja consumindo toda a sua memória física.
Eu acho que existe um limite em qualquer sistema sob o qual o paging out não enfatize o kernel ao ponto que eu descrevo acima, para que o zram melhore o desempenho.
Insights
Quando o seu sistema deseja trocar 100 MB, o que acontece é que ele coloca 100 MB no zram. Vamos dizer que é comprimido para 50% menos, então 50 MB. Isso significa que seu sistema queria liberar 100 MB, mas apenas 50 MB foram liberados. Agora o Linux é esperto quando tem paginado um pedaço de memória (então coloque-os na troca) mas precisa deles novamente, ele pode fazer alguma "otimização", ele pode voltar a esta memória, mas também manter na troca. , portanto, se rapidamente depois de precisar excluir essa parte da memória, poderá evitar uma gravação exagerada no arquivo de troca. Portanto, no seu caso, pode ser que o Linux mantenha os 100 MB em zram e os coloque de volta na RAM normal, para que o sistema consuma 150 MB por algum tempo. Se isso for repetido para um programa maior com dados menos compactáveis, isso pode rapidamente se tornar um pesadelo, imagine um pedaço de RAM de 300 MB que seria paginado e use 120 MB em cada zram swap. Significa que o Linux queria liberar 300 MB da RAM para outros propósitos, mas liberou apenas (300-120-120 = 60) 60 MB, então poderia tentar imprimir mais páginas, e assim por diante, com o problema que você tem 2 zram que podem usar até 2 GB de RAM cada, comendo toda a sua memória.
Conclusão e solução
Então a porcaria do zram? Não, de forma alguma, o problema é que você configurou o zram para ter um tamanho total de exatamente sua RAM física e esse é o problema. Você não deve configurar o zram para usar mais de 25% IMHO de sua RAM física, o que significa que você teria que confiar ainda em uma solução de troca de disco rígido quando o zram swap estiver cheio.
Uma solução simples seria reduzir o zram para manipular cada 500 MB no máximo e incluir um arquivo de permuta de aproximadamente 2-3 GB, para permitir que o kernel libere páginas realmente não utilizadas do zram para esse arquivo de troca. O arquivo de swap não usa a RAM e reduz a pressão sobre ela.
Algumas informações sobre como definir o tamanho do seu disco zram .