Troque em tmpfs (Obviamente uma má idéia, mas é possível?)

7

Esta questão originou-se de uma piada entre colegas de trabalho sobre o aumento do desempenho movendo partições de swap para um tmpfs. Claramente, mesmo que isso seja possível, não é uma boa ideia. Tudo o que eu quero saber é, isso pode ser feito?

Atualmente estou no Ubuntu 14.04, mas imagino que o processo seja semelhante para a maioria das máquinas Linux / Unix. Veja o que estou fazendo:

> mkdir /mnt/tmp
> mount -t tmpfs -o size=10m tmpfs /mnt/tmp
> dd if=/dev/zero of=/mnt/tmp/swapfile bs=1024 count=10240
> chmod 600 /mnt/tmp/swapfile
> mkswap /mnt/tmp/swapfile
# So far, so good!

> swapon /mnt/tmp/swapfile
swapon: /mnt/tmp/swapfile: swapon failed: Invalid argument

Então, no Linux ou no Unix (estou interessado em alguma solução) você pode de alguma forma configurar o swap em um arquivo / partição que reside no RAM? Existe uma maneira de contornar o erro Invalid argument que estou recebendo acima?

Novamente, só quero enfatizar que não estou esperando que isso seja uma solução para um problema do mundo real. Apenas uma experiência divertida, eu acho.

    
por vastlysuperiorman 09.07.2015 / 20:59

2 respostas

8

Não deveria ser possível. A chamada do sistema swapon requer que as chamadas readpage e bmap (indiretamente) sejam implementadas pelo sistema de arquivos:

link

if (!mapping->a_ops->readpage) {
    error = -EINVAL;
    goto bad_swap;
}   

Mas nenhuma delas é implementada por tmpfs , uma entrada desse tipo está faltando na correspondência address_space_operations : link

Pela mesma razão, o tmpfs não pode conter montagens em loop, e o ramfs também não funciona (não tem bmap call)

    
por 09.07.2015 / 21:55
2

A partir deste Q & A link (o site original referenciado não está respondendo):

So "Invalid argument" should be read as "Your filesystem do not support swap file"

A razão de incompatibilidade que suspeito é uma "dependência circular". Deste artigo: link :

These two differences between ramfs and tmpfs make tmpfs much more manageable however this is one major drawback; tmpfs may use SWAP space. If your system runs out of physical RAM, files in your tmpfs partitions may be written to disk based SWAP partitions and will have to be read from disk when the file is next accessed.

O que seria praticamente impossível em seu cenário.

pode funcionar com ramfs , tho - que não tem esse problema.

    
por 09.07.2015 / 21:52