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?
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.
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.
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.
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.
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 é:
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.
Respostas:
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
swapon
manual :Eu acho que o mesmo problema se aplicaria a um arquivo de troca de tamanho dinâmico.
fonte
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.
fonte
Sei que é tarde, mas acho que a melhor solução para troca dinâmica é:
então estabelecendo
CONF_SWAPFACTOR=2
-se/etc/dphys-swapfile
e finalmentefonte
O espaço de troca pode ser adicionado a um sistema em execução usando o
swapon
comando Ele precisa de um swapfile / partição existente (não utilizado). Para criar um, use odd
comando para alocar um arquivo contíguo emkswap
adicione 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
SwapSpace
daemon 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.
fonte