Myslím, že u zswapu bude potřeba mít vhodně nastavený swappiness nebo více swapů + priority. Swappiness zajistí swapování trochu s předstihem (do zswapu je IIUC problém swapovat, když je málo RAM), druhý swap s nižší prioritou by snad pokryl neúspěšné pokusy swapovat do zswapu.
Mám se zswapem (nebo nějakým principiálně podobným řešením) na starém telefonu (IIIRC 512 MiB RAM rozdělené asi 128+384 do GPU a CPU), kde jsem zřejmě měl swappiness=0 a žádný záložní swap. Když už bylo RAM málo, někdy se (můj odhad podle chování + dmesg) stávalo něco takového:
1. Bylo málo RAM.
2. Telefon chtěl něco přesunout do swapu, aby nějakou RAM uvolnil.
3. Aby mohl něco přesunout do swapu, potřeboval na to alokovat místo někde v RAM. To často v této situaci nebylo k dispozici, takže zápis do swapu hodil I/O error.
4. Další swap nebyl k dispozici, tak to kernel to zkoušel znovu, dokud to nevyšlo. Většinou to docela trvalo, protože když se kernel primárně věnuje neúspěšným pokusům uvolňování RAM a ostatní se prakticky nehýbe, nic neuvolňuje RAM. Nevím, odkud tu RAM nakonec vzal, snad se rozhodl uvolnit poslední zbytečky cache nebo nevím.
Ve výsledku to pak byl mnohem větší thrashing.