Eu tenho essa ideia maluca e quero saber as armadilhas dessa abordagem (ou se ela pode até funcionar sem deadlocks ... etc.).
O objetivo é criar um espaço de troca única de expansão e contração automática que ofereça capacidade suficiente para corresponder ao disco rígido inteiro. O desempenho não é um grande objetivo aqui. A ideia é apresentar uma zona de buffer para ocasiões raras de uso excessivo de memória.
Supondo que tenhamos 1 disco rígido de 10 GB. Podemos criar um arquivo de troca esparso via (isso foi derivado de soluções alternativas do arquivo de swap BTRFS):
swapfile=$(losetup -f)
truncate -s 10G /swap
losetup $swapfile /swap
mkswap $swapfile
swapon $swapfile
Precisamos fazer o acima, porque swapon
não permite arquivos esparsos.
Portanto, temos dois problemas aqui:
fallocate -d /swap
ou fallocate -d $swapfile
(ainda não tentei isso) , a fim de perfurar o arquivo de swap para torná-lo contrato depois de ser usado. Podemos definir vm.swappiness = 0
ou vm.swappiness = 1
para que os processos (que são mais importantes para mim) não usem essa troca.
Por fim, isso funcionaria com a hibernação de acordo com as instruções no link ?