swapon(2)

NOME
swapon, swapoff - start/stop swapping sul file/dispositivo

LIBRARY
Standard C library (libc, -lc)

SINTASSI
#include <sys/swap.h>

int swapon(const char *path, int swapflags);
int swapoff(const char *path);

DESCRIZIONE
swapon() imposta lo swap sul dispositivo a blocchi o sul file specificato in path. swapoff() ferma lo swap sul dispositivo a blocchi o sul file specificato in path.

Se nell'argomento swapflags di swapon() è specificata l'opzione SWAP_FLAG_PREFER, la nuova area di swap avrà una priorità maggiore di quella predefinita. La priorità è codificata in swapflags come:

    (prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK

Se nell'argomento swapflags di swapon() è specificata l'opzione SWAP_FLAG_DISCARD, le pagine di swap liberate saranno segnate come scartate prima di essere riutilizzate, se il dispositivo di swap supporta l'operazione discard o trim. (Questo potrebbe migliorare le prestazioni di alcuni Dispositivi a Stato Solido, ma spesso non avviene). Vedere anche la sezione NOTE.

Queste funzioni possono essere usate solo da un processo privilegiato (uno che ha le funzionalità CAP_SYS_ADMIN).

  Priorità
Ogni area di swap ha una sua priorità, sia essa alta o bassa. Quella predefinita è bassa. Tra le aree a bassa priorità le aree più nuove hanno sempre una priorità più bassa delle aree più vecchie.

Tutte le priorità impostate attraverso swapflags sono ad alta prorità, più alta di quella predefinita. Esse possono avere qualunque valore non negativo scelto dal chiamante. A numero maggiore corrisponde priorità maggiore.

Le pagine di swap sono allocate in aree in ordine di priorità, prima quelle con priorità maggiore. Per aree aventi priorità diverse, un'area con priorità più alta viene esaurita prima che venga usata un'area a priorità più bassa. Se vi sono due o più aree con la stessa priorità, ed è la massima priorità disponibile, le pagine sono allocate secondo uno schema a "round-robin".

Fino al kernel 1.3.6, si seguivano queste regole, ma con alcune eccezioni.

VALORE RESTITUITO
In caso di successo restituisce zero. In caso di errore restituisce -1, e errno verrà impostato per indicare l'errore.

ERRORI

EBUSY
    (per swapon()) Il percorso specificato è già stato usato come area di swap.

EINVAL
    Il percorso del file esiste, ma non fa riferimento nè a un file regolare, nè a un dispositivo a blocchi.

EINVAL
    (swapon()) Il percorso indicato non contiene una firma di swap valida o risiede in un filesystem in memoria come tmpfs(5).

EINVAL (a partire da Linux 3.4)
    (swapon()) Un valore di opzione non valido è sato specificato in swapflags.

EINVAL
    (swapoff()) percorso attualmente non è un'area di swap.

ENFILE
    E' stato raggiunto il limite per l'intero sistema sul numero totale di file aperti.

ENOENT
    Il percorso del file non esiste.

ENOMEM
    Il sistema ha memoria insufficiente per iniziare lo swapping.

EPERM
    Il chiamante non ha la funzionalità CAP_SYS_ADMIN. In alternativa, il numero massimo di file di swap è già in uso; vedere le NOTE sotto.

STANDARDS
Linux.

STORIA
The swapflags argument was introduced in Linux 1.3.2.

NOTE
La partizione o percorso devono essere preparati con mkswap(8).

There is an upper limit on the number of swap files that may be used, defined by the kernel constant MAX_SWAPFILES. Before Linux 2.4.10, MAX_SWAPFILES has the value 8; since Linux 2.4.10, it has the value 32. Since Linux 2.6.18, the limit is decreased by 2 (thus: 30) if the kernel is built with the CONFIG_MIGRATION option (which reserves two swap table entries for the page migration features of mbind(2) and migrate_pages(2)). Since Linux 2.6.32, the limit is further decreased by 1 if the kernel is built with the CONFIG_MEMORY_FAILURE option. Since Linux 5.14, the limit is further decreased by 4 if the kernel is built with the CONFIG_DEVICE_PRIVATE option.

Discard of swap pages was introduced in Linux 2.6.29, then made conditional on the SWAP_FLAG_DISCARD flag in Linux 2.6.36, which still discards the entire swap area when swapon() is called, even if that flag bit is not set.

VEDERE ANCHE
mkswap(8), swapoff(8), swapon(8)

TRADUZIONE
La traduzione italiana di questa pagina di manuale è stata creata da Goffredo Baroncelli <kreijack@usa.net>, Giulio Daprelà <giulio@pluto.it>, Elisabetta Galli <lab@kkk.it> e Marco Curreli <marcocurreli@tiscali.it>

Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 (https://www.gnu.org/licenses/gpl-3.0.html) o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.

Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a pluto-ildp@lists.pluto.it.