Criando um arquivo de swap esparso (expandindo e contraindo automaticamente) com suporte a perfuração

1

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:

  1. Sendo escasso aumenta a fragmentação, embora isso reduza o desempenho, não deve impedir que ele funcione corretamente?
  2. O arquivo esparso não se contrai em tamanho, por isso precisamos fazer um furo ( link & link ), então talvez possamos executar periodicamente 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 ?

    
por CMCDragonkai 10.12.2015 / 08:29

0 respostas