1. Principes

Pour rappel, il existe deux types de mémoire. La mémoire réelle/vive ou RAM (matérialisée par vos barrettes mémoire dans votre UC) et la mémoire de pagination ou d'échange appelée également SWAP.
La mémoire disponible sur un système linux correspond donc à la somme de la mémoire réelle et de la mémoire de pagination.

Sur un système peu chargé, la mémoire de pagination n'est quasiment jamais utilisé. Dans le cas contraire, cela signifie que votre système est chargé et qu'il faudra peut être ajouter de la RAM. En fait, le noyau va déplacer en mémoire de pagination les processus les moins utilisés.

2. Afficher la taille de la mémoire totale

Pour connaître la taille de la mémoire totale sur votre système, il suffit d'utiliser la commande free avec le paramètre -t.  Les autres options de cette commande  vous permettent d"afficher  la taille  en  octet (-b), en Ko (-k), en Mo (-m). Si vous voulez verifier son utilisation, activer l'option -s <nombre de seconde> pour rafraichir l'affichage toutes les n secondes.
#free -m -t
          total      used       free    shared    buffers     cached
Mem:          503       495          7         0       47        171
-/+ buffers/cache:        276        227
Swap:         1513          0       1512
Total:        2017        496       1520


Ici l'on constate que la mémoire totale (RAM + mémoire de pagination) est de 2 Go (2017 Mo).

3. La mémoire de pagination

Pour stocker la mémoire de pagination, il y a deux possibilités : soit utiliser un fichier normal soit utiliser une partition dédiée. Même s'il est conseillé d'utilser une partion disque dédiée pour des questions de rapidité notamment, il est aussi possible d'utiliser un fichier d'échange. L'avantage de cette deuxième solution consiste essentiellement à sa mise en place rapide mais également à sa possibilité d'augmenter facilement sa taille.

3.1 Partition de swap

Une partition peut être définie sur une partition du disque dur ou un volume logique. Il faut formater la partition pour accueillir l'espace de pagination à l'aide de la commande mkswap -c <nom de la partition> (le paramètre -c permet de vérifier les erreurs).

Exemple :
#mkswap -c /dev/hda7

Il faut ensuite activer cette nouvelle partition swap en utilisant la commande swapon <nom de la partition>.

Exemple :
#swapon /dev/hda7

Pour visualiser, vous pouvez utiliser la commande swapon -s.

Exemple :
#swapon -s
Filename                     Type          Size    Used    Priority
/dev/hda2                     partition       1550232 1084    -1
/dev/hda7                     partition       1550232 1084    -2


La notion de priorité définit la priorité d'utilisation de la partition swap. Ainsi celle qui a la plus grande priorité est utilisée en premier. Il est conseillé de définir des priorités équivalentes pour des partitions SWAP situées sur un même disque physique car le système les utilisera en parallèle, ce qui permet un accès plus rapide.

Pour désactiver une partition de swap vous devez utiliser la commande swapoff <nom de la partition>

Exemple :
#swapoff /dev/hda7

3.2 Fichier de swap

Pour créer un fichier de swap, il faut utiliser la commande dd. La commande dd utilise notamment les paramètres suivants :
if : fichier en entrée
of : fichier en sortie
bs : taille des blocs en octet avec laquelle les données seront lues (par défaut 512)
count : nombre de blocs à lire

Ici nous allons créer un de 256 Mo en utilisant en entrée le fichier spécial /dev/zero retourne des caractères "null".

Exemple :
#dd if=/dev/zero of=ficswap bs=1024k count=256
256+0 records in
256+0 records out
268435456 bytes transferred in 12.565065 seconds (21363635 bytes/sec)


Nous allons ensuite formater notre fichier pour qu'il puisse accueillir l'espace de pagination :

#mkswap ficswap
Setting up swapspace version 1, size = 268431 kB
no label, UUID=05a66ce3-f133-4b88-a08d-2cd8d3e202eb


Puis ensuite nous activons cette nouveau espace de pagination :
#swapon ficswap

Nous pouvons vérifier que ce nouvel espace de pagination est bien activé :
#swapon -s
Filename                      Type           Size    Used    Priority
/dev/hda2                     partition       1550232 63256   -1
/dev/hda7                     partition       1550232 63256   -2
/home/ficswap                 file            262136 0       -3


Enfin pour activer cet espace au démarrage, vous devrez ajouter les lignes suivantes dans votre fichier /etc/fstab :
/home/fciswap     swap    swap    defaults,pri=-3    0   0

4. Commande pour obtenir des informations sur la mémoire

4.1 vmstat

vmstat permet d'afficher les statistiques sur la mémoire virtuelle.

Exemple d'utilisation :
vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r  b   swpd     free buff    cache     si so     bi    bo      in    cs      us sy id wa
1  0 189088   8600  16020 107424    1    4      9    18    399   903     22  3 76 0
2  0 189088   8576  16020 107424    0    0      0     0    397  2926     27  1 72  0
6  0 189088   8572  16020 107424    0    0      0     0    442  2903     25  2 73  0
4  0 189088   8600  16020 107424    0    0      0     0    679  3843     31  2 67  0
1  0 189088   8580  16028 107424    0    0      0    25    680  3660    27  3 70  0

memory :
- swpd : Quantité de mémoire virtuelle utilisée en Ko (mémoire disponible -mémoire utilisé + swap utilisé)
-free : Quantité de mémoire physique libre
- buff : de mémoire utilisée comme tampons d'E/S

swap :
- si: Quantité de mémoire paginé lue depuis un disque en ko/s.
- so: Quantité de mémoire paginé transférée sur disque en ko/s.

4.1 sar (System Activity Reporter)

La commande sar n'est pas installé par défaut sur un système Debian. Pour cela, vous devez installer le paquet sysstat.
#apt-get install sysstat

L'option -r permet d'avoir des statistiques sur la mémoire et l'espace de pagination

Exemple :
#sar -r 5
Linux 2.4.27-2-k7 (linux)      05/07/06

01:43:26   kbmemfree  kbmemused  %memused kbbuffers kbcached  kbswpfree  kbswpused  %swpused  kbswpcad
01:43:31   9296          506428         98.20        18656       104092    1359992    190240       12.27     11072
Average:    9296          506428         98.20        18656       104092    1359992    190240       12.27     11072


kbmemfree : quantité de mémoire libre en Ko
kbmemused : quantité de mémoire utilisée en Ko
%memused : pourcentage de mémoire utilisée