swapon(2)

NUME
swapon, swapoff - pornește/oprește gestionarea spațiului de interschimb (memoria virtuală, „swap”) din fișier/dispozitiv

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <sys/swap.h>

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

DESCRIERE
swapon() activează spațiul de interschimb din fișierul sau dispozitivul de blocuri specificat de path. swapoff() dezactivează spațiul de interschimb din fișierul sau dispozitivul de blocuri specificat de path.

Dacă în argumentul SWAP_FLAG_PREFER este specificat fanionul swapon() swapflags, noul spațiu de interschimb va avea o prioritate mai mare decât cea implicită. Prioritatea este codificată în swapflags sub forma: swapflags:

    (prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK

În cazul în care în argumentul SWAP_FLAG_DISCARD este specificat în argumentul swapon() swapflags, paginile de interschimb eliberate vor fi înlăturate înainte de a fi reutilizate, dacă dispozitivul de interschimb suportă operația de înlăturare sau de tăiere; (acest lucru poate îmbunătăți performanțele pe unele dispozitive cu stare solidă, dar adesea nu o face). A se vedea, de asemenea, secțiunea NOTE.

Aceste funcții pot fi utilizate numai de către un proces privilegiat (unul care are capacitatea CAP_SYS_ADMIN).

  Prioritate
Fiecare spațiu de interschimb are o prioritate, fie mare, fie mică. Prioritatea implicită este mică. În cadrul spațiilor cu prioritate redusă, spațiile mai noi au o prioritate și mai redusă decât cele mai vechi.

Toate prioritățile stabilite cu swapflags sunt de prioritate înaltă, mai mari decât cele implicite. Acestea pot avea orice valoare nenegativă aleasă de apelant. Un număr mai mare înseamnă o prioritate mai mare.

Paginile de interschimb sunt alocate din zone în ordinea priorității, cu prioritate maximă. În cazul zonelor cu priorități diferite, o zonă cu prioritate mai mare este epuizată înainte de a utiliza o zonă cu prioritate mai mică. În cazul în care două sau mai multe zone au aceeași prioritate, iar aceasta este cea mai mare prioritate disponibilă, paginile sunt alocate pe bază de rotație între ele.

Începând cu Linux 1.3.6, nucleul respectă de obicei aceste reguli, dar există și excepții.

VALOAREA RETURNATĂ
În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE

EBUSY
    (pentru swapon()) path specificată este deja utilizată ca spațiu de interschimb.

EINVAL
    Fișierul path există, dar nu se referă nici la un fișier obișnuit, nici la un dispozitiv de blocuri;

EINVAL
    (swapon()) Ruta indicată nu conține o semnătură de spațiu de interschimb validă sau se află pe un sistem de fișiere în memorie, cum ar fi tmpfs(5).

EINVAL (începând cu Linux 3.4)
    (swapon()) În swapflags a fost specificată o valoare nevalidă a fanionului.

EINVAL
    (swapoff()) path nu este în prezent un spațiu de interschimb.

ENFILE
    Limita la nivel de sistem a numărului total de fișiere deschise a fost atinsă.

ENOENT
    Fișierul path nu există.

ENOMEM
    Sistemul nu are suficientă memorie pentru a iniția gestionarea spațiului de interschimb.

EPERM
    Apelantul nu are capacitatea CAP_SYS_ADMIN. Alternativ, numărul maxim de fișiere de spații de interschimb (swap) este deja utilizat; a se vedea secțiunea NOTE de mai jos.

STANDARDE
Linux.

ISTORIC
Argumentul swapflags a fost introdus în Linux 1.3.2.

NOTE
Partiția sau ruta trebuie să fie pregătită cu mkswap(8).

Există o limită superioară a numărului de fișiere de interschimb „swap” care pot fi utilizate, definită de constanta nucleului MAX_SWAPFILES. Înainte de Linux 2.4.10, MAX_SWAPFILES avea valoarea 8; începând cu Linux 2.4.10, aceasta are valoarea 32. Începând cu Linux 2.6.18, limita este diminuată cu 2 (deci 30); începând cu Linux 5.19, limita este diminuată cu 3 (deci: 29) dacă nucleul este construit cu opțiunea CONFIG_MIGRATION (care rezervă două intrări în tabelul de interschimb pentru caracteristicile de migrare a paginilor din mbind(2) și migrate_pages(2)). Începând cu Linux 2.6.32, limita este redusă și mai mult cu 1 dacă nucleul este construit cu opțiunea CONFIG_MEMORY_FAILURE. Începând cu Linux 5.14, limita este redusă și mai mult cu 4 dacă nucleul este construit cu opțiunea CONFIG_DEVICE_PRIVATE. Începând cu Linux 5.19, limita este redusă suplimentar cu 1 dacă nucleul este construit cu opțiunea CONFIG_PTE_MARKER.

Retragerea paginilor de interschimb a fost introdusă în Linux 2.6.29, apoi a fost condiționată de fanionul SWAP_FLAG_DISCARD în Linux 2.6.36, care încă înlătură întreaga zonă de interschimb atunci când este apelat swapon(), chiar dacă bitul de fanion nu este activat.

CONSULTAȚI ȘI
mkswap(8), swapoff(8), swapon(8)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.