Swap sous Unix, généralités et spécificités Solaris

Principe des partitions de swap

Généralement, sous Unix :

  • un processus dispose d'un espace mémoire supérieur à la RAM, il s'agit de la mémoire virtuelle.
  • l'espace mémoire est découpée en segments de taille donnée, les pages. Les pages d'un processus en RAM au fur et à mesure des besoins sont chargées : il s'agit du phénomène de pagination.
  • lorsque la RAM sature et que des pages doivent être chargées, les vieilles pages sont éliminées de la RAM et copier sur disque pour charger les nouvelles pages : il s'agit du swapping.

Il est impératif de disposer d'une partition de swap.

La partition de swap est créée comme les autres partitions régulières. En revanche pour la partition de swap, il n'est pas nécessaire de faire appel à la commande newfs.

Activation de partitions de swap au boot (swapon -a)

Les scripts de démarrage activent automatiquement le swap avec la commande swapon -a qui consulte le fichier /etc/fstab ou équivalent.

Pour Linux : /etc/fstab

/dev/hda2   none   swap    sw   0   0     # Linux

Pour Solaris : /etc/vfstab

# device           device    mount    fs       fsck    mount      mount 
# to fsck          to fsck   point    type     pass    at boot    options
# 
/dev/dsk/c0t0d0s1  -         -        swap     -       no         -

Taille du swap (free etswap -s)

Par tradition, la taille du swap est fixée à trois fois la RAM disponible. En cas de taille de swap insuffisante, de gros problèmes se présentent :

% ./programme
  
No swap space available
Sep 15 17:07:43 cerise /kernel: pid 335 (z), uid 0, was killed:
out of swap space

Diverses commandes sont disponibles pour connaître la taille du swap.

Linux : commande free

% free

        total        used       free        shared       buffers
Mem:   129488      121716       7772          4136        104824

Swap:  259768           0     259768

Solaris : swap -l et swap -s

% /usr/sbin/swap -l
swapfile             dev           swaplo      blocks       free
swapfs               -             0           139408       123280
/dev/dsk/c0t3d0s1    32,25         8           98488        98488

% /usr/sbin/swap -s
total: 8264k bytes allocated + 3520k reserved = 11784k used, \
52632k available

Fichiers de swap (mkfile, dd)

Il est possible d'utiliser des fichiers pour swapper au lieu de partitions mais tous les systèmes Unix ne le permettent pas toujours.

Avantages :

  • en cas de swap insuffisant, il est simple de créer un fichier de swap

Inconvénients :

  • une fois ajouté au swap, il est impossible de faire machine arrière, pour supprimer le fichier de swap sur la plupart des OS Unix, il est impératif de rebooter.

2 méthodes pour générer un fichier de swap :

Commande mkfile :

mkfile 50m swapfile

Commande dd :

% dd if=/dev/zero of=swapfile bs=1m count=50
     50+0 records in
     50+0 records out
     52428800 bytes transferred in 3.533640 secs (14837052 bytes/sec)

Pour finalement indiquer qu'il s'agit d'un fichier de swap :

swapon /chemin/vers/swapfile

Swap sous Solaris 2.8

Comment l'espace swap est alloué sous Solaris

Initialement à l'installation d'un système solaris, de l'espace swap est allouée automatiquement sur des slices de disques. Les tailles par défaut sont récapitulées dans le tableau qui suit :

Mémoire physique du système (Mb) Espace swap appliquée par défaut (Mb)
16-63 32
64-127 64
128-511 128
> 512 256

Après l'installation du système, les slices de swap sont listés dans le fichier /etc/vfstab et activés par le script /sbin/swapadd au démarrage du système.

Plannification de l'espace swap