NOM¶
swapon, swapoff - Activer/désactiver un fichier ou un
périphérique de swap
SYNOPSIS¶
#include <unistd.h>
#include <asm/page.h> /* pour avoir PAGE_SIZE */
#include <sys/swap.h>
int swapon(const char *path, int swapflags);
int swapoff(const char *path);
DESCRIPTION¶
swapon() active le swap sur le fichier ou le périphérique
bloc indiqué dans
path.
swapoff() arrête le swap
sur le fichier ou le périphérique bloc indiqué dans
path.
Si l'attribut
SWAP_FLAG_PREFER est indiqué dans le
paramètre
swapflags de
swapon(), la nouvelle zone de swap
disposera d'une priorité plus élevée que la zone de swap
par défaut. La priorité est codée ainsi :
(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK
Si l'attribut
SWAP_FLAG_DISCARD est indiqué dans le
paramètre
swapflags de
swapon(), les pages
d'échange libérées seront supprimées avant
d'être réutilisées, si le périphérique
d'échange prend en charge l'opération de mise au rebut
(« discard ») ou d'élagage
(« trim »). Ceci peut améliorer les
performances sur certains périphériques SSD
(« Solid State Devices »), mais souvent cela n'a
pas d'influcence. Consultez aussi la section NOTES.
Cette fonction ne peut être appelée que par un processus
privilégié (qui a la capacité
CAP_SYS_ADMIN.
Priorité¶
Chaque zone de swap a une priorité, haute ou basse. La priorité
par défaut est basse. Parmi les zones de basses priorités, les
nouvelles zones sont toujours affectées d'une priorité
inférieure à celle des zones précédentes.
Toutes les priorités définies avec l'argument
swapflags
sont plus élevées que la priorité par défaut.
Elles peuvent prendre n'importe quelle valeur positive ou nulle choisie par
l'appelant. Plus la valeur est haute, plus la priorité est
élevée.
Les pages de swap sont allouées dans les zones par ordre
décroissant de priorité. Pour des zones de priorité
différentes, la plus haute sera toujours remplie entièrement
avant d'utiliser la zone de priorité plus faible. Si deux ou plus de
zones ont la même priorité, et qu'il s'agit de la plus haute
priorité disponible, les pages sont allouées en utilisant un
algorithme Round-Robin entre elles.
Sur Linux 1.3.6, le noyau suit généralement ces règles,
mais il y a parfois des exceptions.
VALEUR RENVOYÉE¶
S'il réussit, cet appel système renvoie 0. S'il échoue, il
renvoie -1 et remplit
errno en conséquence.
ERREURS¶
- EBUSY
- (pour swapon()) Le chemin path est déjà
utilisé comme espace d'échange.
- EINVAL
- Le fichier path existe, mais ne référence ni un
fichier ordinaire, ni un périphérique bloc.
- EINVAL
- (swapon()) Le fichier indiqué ne contient pas de signature
de swap correcte ou réside sur un système de fichiers en
mémoire comme tmpfs.
- EINVAL (depuis Linux 3.4)
- (swapon()) flags contient un drapeau invalide.
- EINVAL
- (swapoff()) Le chemin path n'est pas actuellement un espace
d'échange.
- ENFILE
- La limite du nombre total de fichiers ouverts sur le système a
été atteinte.
- ENOENT
- path n'existe pas.
- ENOMEM
- Pas assez de mémoire pour démarrer le swapping.
- EPERM
- L'appelant n'a pas la capacité CAP_SYS_ADMIN, ou le nombre
maximal de fichiers d'échange est atteint ; voir la section
NOTES.
Ces fonctions sont spécifiques à Linux et ne doivent pas
être employées dans des programmes destinés à
être portables. Le deuxième argument
swapflags a
été introduit dans Linux 1.3.2.
NOTES¶
La partition ou le fichier doivent être préparés par
mkswap(8).
Le nombre de fichiers d'échange qui peuvent être utilisés
est limité par la constante
MAX_SWAPFILES du noyau. Avant le
noyau 2.4.10,
MAX_SWAPFILES valait 8 ; depuis Linux 2.4.10, il
vaut 32. Depuis 2.6.18, cette limite est décrémentée de 2
(et vaut donc 30) si le noyau est compilé avec l'option
CONFIG_MIGRATION (qui réserve deux entrées de table de
swap pour les possibilités de migration offertes par
mbind(2) et
migrate_pages(2)). Depuis Linux 2.6.32, la limite est encore
décrémentée de 1 si le noyau est compilé avec
l'option
CONFIG_MEMORY_FAILURE.
La suppression de pages d'échange a été introduite dans le
noyau 2.6.29, puis fut conditionnée à l'attribut
SWAP_FLAG_DISCARD dans le noyau 2.6.36, qui supprime toujours la
zone d'échange entière quand
swapon() est appelée,
même si ce bit d'attribut n'est pas mis.
VOIR AUSSI¶
mkswap(8),
swapoff(8),
swapon(8)
COLOPHON¶
Cette page fait partie de la publication 3.65 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce
document en utilisant la commande «
man -L C
<section>
<page_de_man> ».