Ubuntu supporta il dimensionamento dei file di scambio dinamico?


13

Non riesco a immaginare perché un file di scambio debba avere dimensioni fisse. Perché non lasciarlo ridimensionare in modo dinamico, come il file di immagine del disco rigido per una scatola virtuale?


Linux non supporta le dimensioni dello spazio di scambio dinamico a meno che non si contasse l'opzione per aggiungere e rimuovere interi spazi di scambio in fase di esecuzione. (Neanche Windows tra l'altro, nemmeno quest'ultimo.)
David Foerster,

Il Mac supporta lo scambio dinamico?
Tom Mercer,

Non ne ho idea. È un kernel completamente diverso che non ho studiato. È probabile che sia simile allo spazio di scambio in Linux. Ad ogni modo, potresti aprire una nuova domanda su Unix e Linux o fare una domanda diversa se hai una domanda nuova o di follow-up sul kernel Darwin di OS X? La sezione dei commenti non è adatta o pensata per nuove domande o discussioni estese. :-) Grazie.
David Foerster,

@DavidFoerster su Windows è possibile impostare le dimensioni minime e massime per ciascun file di paging e Windows aumenterà la dimensione del file di paging quando necessario. tomshardware.com/news/…
phuclv

Risposte:


11

Non sembra che Linux supporti il ​​dimensionamento dei file di scambio dinamico (in ogni caso, non sono riuscito a rilevare che un file di scambio aveva cambiato dimensione senza un swapoff/ swapon).

Presumibilmente è più facile supporre che un file di scambio non cambi dinamicamente le dimensioni del file quando si scrive il codice per supportarlo. Non vedo nemmeno un grande uso per questo. Poiché è possibile utilizzare più file di scambio, nulla ti impedisce di creare più file di scambio in base alle esigenze.

Da notare anche questo paragrafo dalla swaponpagina di manuale :

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.

Penso che lo stesso problema si applicherebbe a un file di scambio di dimensioni dinamiche.


Sembra che questo sia vero e swapspace non ridimensiona nemmeno in modo dinamico lo swap.
Tom Mercer,

2

SwapSpace è un'utilità che ti permetterà di effettuare scambi di dimensioni dinamiche se questo è quello che stai cercando. Credo che sia disponibile in Ubuntu.


Mentre aveva una nuova versione 2 anni fa , le versioni impacchettate per Ubuntu sembrano tutte antiche. Come funziona?
muru,

Non riesco a immaginare che il metodo utilizzato per scrivere il file di scambio sia cambiato ma non potrei dirlo con certezza. Funziona bene su Debian.
user231695,

Continuo a votare la tua risposta in quanto è altrettanto semplice creare un nuovo spazio.
user231695,

Ci proverò e riporterò indietro.
Tom Mercer,

@ user231695 mentre è semplice creare un nuovo spazio di swap, è terribilmente scomodo e forse completamente non realizzabile come soluzione. L'unica volta in cui un utente desidera aggiungere un nuovo spazio di scambio è il momento in cui lo scambio esistente è pieno. Da qui la mia domanda per il dimensionamento dinamico del file di scambio.
Tom Mercer,

1

So che è tardi, ma penso che la migliore soluzione per lo scambio dinamico sia:

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

quindi impostando CONF_SWAPFACTOR=2in /etc/dphys-swapfilee, infine,

sudo service dphys-swapfile start

Non sembra ridimensionare in modo dinamico lo swap. Sembra uno script per inizializzare un file di scambio di determinate dimensioni che per impostazione predefinita ha una capacità di 2x RAM.
Tom Mercer,

Ciao @TomMercer impostazione swapfactor e maxswap, secondo i commenti nel file: "# imposta la dimensione sul valore calcolato, questa volta la dimensione della RAM, si adatta in modo dinamico, garantisce che ci sia abbastanza scambio senza sprecare spazio su disco in eccesso". "adatta dinamicamente" sembra quello che stai cercando. Migliore
Denis Pitzalis,

Rende il mio file di scambio di dimensioni tra, diciamo, 1KB e 16GB, mentre sto usando il sistema operativo e riempiendo la RAM? Questo è ciò che significa "ridimensionamento dinamico" di swap. La creazione di un file di scambio che è un multiplo della dimensione della RAM non è dinamica. Non ha senso avere un file di swap fino a quando la RAM non è piena e quindi si desidera che il file di swap abbia esattamente le dimensioni della VRAM in uso. Se chiudi le schede o l'immagine enorme su cui stai lavorando, il file di scambio dovrebbe ridimensionare dinamicamente verso il basso. Swapfile dovrebbe sempre essere esattamente pieno al 100% ridimensionandosi dinamicamente.
Tom Mercer,

0

Lo spazio di swap può essere aggiunto a un sistema in esecuzione utilizzando il swaponcomando Ha bisogno di un file di swap / partizione (non utilizzato) esistente. Per crearne uno, utilizzare il ddcomando per allocare un file contiguo, quindi mkswapaggiungere le informazioni di controllo corrette al file / alla partizione.

Per rimuovere un file di scambio, utilizzare swapoff; il file può quindi essere eliminato.

Ho il sospetto che questo sia ciò SwapSpaceche designa quel @ user231695 menzionato.

Si noti che swapoff può essere un'operazione lenta se il file di swap è in uso; tutti i dati devono essere trasferiti in un'altra area di scambio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.