O Ubuntu suporta o dimensionamento dinâmico de arquivos de troca?

13

Não consigo imaginar por que um arquivo de troca precisa ter tamanho fixo. Por que não permitir que ele seja redimensionado dinamicamente, como o arquivo de imagem do disco rígido de uma caixa virtual?

Tom Mercer
fonte
O Linux não suporta tamanhos de espaço de troca dinâmico, a menos que você conte a opção de adicionar e remover espaços de troca inteiros em tempo de execução. (Nem o Windows btw, nem mesmo o último..)
David Foerster
O Mac suporta troca dinâmica?
Tom Mercer
Eu não faço ideia. É um núcleo completamente diferente que eu não estudei. Provavelmente, é semelhante à troca de espaço no Linux. De qualquer forma, você poderia abrir uma nova pergunta Unix & Linux ou Ask Different se tiver uma pergunta nova ou de acompanhamento sobre o kernel Darwin do OS X? A seção de comentários não é adequada ou destinada a novas perguntas ou discussão prolongada. :-) Obrigado.
David Foerster
@DavidFoerster no Windows, você pode definir os tamanhos mínimo e máximo para cada arquivo de paginação e o Windows aumentará o tamanho do arquivo de paginação quando necessário. tomshardware.com/news/…
phuclv 01/12/19

Respostas:

11

Parece que o Linux não suporta o dimensionamento dinâmico de arquivos de troca (de qualquer forma, não consegui detectar que um arquivo de troca havia mudado de tamanho sem um swapoff/ swapon).

Presumivelmente, é mais fácil assumir que um arquivo de troca não altera o tamanho do arquivo dinamicamente ao escrever um código para suportá-lo. Também não vejo grande utilidade para isso. Como você pode usar vários arquivos de troca, nada impede que você crie mais arquivos de troca, conforme necessário.

Observe também este parágrafo na página de swaponmanual :

The  swap file implementation in the kernel expects to be able to write
to the file directly, without the assistance of the  filesystem.   This
is  a problem on preallocated files (e.g.  fallocate(1)) on filesystems
like XFS or ext4, and on copy-on-write filesystems like btrfs.

Eu acho que o mesmo problema se aplicaria a um arquivo de troca de tamanho dinâmico.

muru
fonte
Parece que isso é verdade, e o swapspace nem redimensiona dinamicamente a troca.
Tom Mercer
2

SwapSpace é um utilitário que permitirá que você faça trocas dinamicamente dimensionadas, se é isso que você está procurando. Eu acredito que ele está disponível no Ubuntu.

user231695
fonte
Embora tenha sido lançada há dois anos , as versões empacotadas para o Ubuntu parecem antigas. Quão bem isso funciona?
Muru
Não consigo imaginar que o método usado para gravar o arquivo de troca tenha sido alterado, mas não sei ao certo. Funciona bem no debian.
user231695
Ainda voto a sua resposta, pois é tão simples criar um novo espaço.
user231695
Vou tentar e relatar.
Tom Mercer
@ user231695 Embora seja simples criar um novo espaço de troca, é terrivelmente inconveniente e possivelmente completamente impraticável como solução. A única vez que um usuário deseja adicionar um novo espaço de troca é o exato momento em que a troca existente está cheia. Daí a minha pergunta para o dimensionamento dinâmico do arquivo de troca.
Tom Mercer
1

Sei que é tarde, mas acho que a melhor solução para troca dinâmica é:

sudo apt install dphys-swapfile
sudo update-rc.d dphys-swapfile enable

então estabelecendo CONF_SWAPFACTOR=2-se /etc/dphys-swapfilee finalmente

sudo service dphys-swapfile start
Denis Pitzalis
fonte
Não parece redimensionar dinamicamente a troca. Parece um script para inicializar um arquivo de troca de determinado tamanho, cujo padrão é 2x capacidade de RAM.
Tom Mercer
Oi, @TomMercer definindo swapfactor e maxswap, de acordo com os comentários no arquivo: "# define o tamanho para o valor calculado, desta vez o tamanho da RAM, adapta-se dinamicamente, garante que há troca suficiente sem desperdiçar espaço em disco em excesso". "adapta-se dinamicamente" parece o que você está procurando. Best
Denis Pitzalis 02/12/19
Faz meu arquivo de troca variar de tamanho entre, digamos, 1 KB e 16 GB, enquanto eu estou usando o sistema operacional e preenchendo a RAM? É isso que significa "redimensionar dinamicamente" a troca. Criar um arquivo de troca que seja múltiplo do tamanho da RAM não é dinâmico. Não há nenhum ponto em ter um arquivo de troca até que a RAM esteja cheia e você deseja que o arquivo de troca seja exatamente do tamanho da VRAM que você está usando. Se você fechar as guias ou a imagem enorme em que está trabalhando, o arquivo de troca deverá ser redimensionado dinamicamente. O arquivo de troca sempre deve estar exatamente 100% cheio, redimensionando-se dinamicamente.
Tom Mercer
0

O espaço de troca pode ser adicionado a um sistema em execução usando o swaponcomando Ele precisa de um swapfile / partição existente (não utilizado). Para criar um, use o ddcomando para alocar um arquivo contíguo e mkswapadicione as informações de controle corretas ao arquivo / partição.

Para remover um arquivo de troca, use swapoff; o arquivo pode ser excluído.

Eu suspeito que é isso que SwapSpacedaemon que @ user231695 mencionado faz.

Observe que o swapoff pode ser uma operação lenta se o swapfile estiver em uso; todos os dados devem ser transferidos para outra área de troca.

CSM
fonte