Par Jonesy.
La mémoire du pingouin est multiple et il peut être un véritable éléphant !
Il y a la RAM et la SWAP.
RAM, Random Access Memory, c'est la mémoire physique de l'ordinateur. C'est l'un des paramètres principaux pour la vente des PCs, avec la vitesse du processeur et la taille du disque dur.SWAP, échange, c'est une zone d'échange sur le disque dur, qui peut être sous forme de partition(s) du disque dur ou de fichier(s) (plus souple, mais moins performant).
GNU/Linux peut gérer plusieurs zones de SWAP, partitions et fichiers mélangés.
Pour augmenter la mémoire disponible pour le système, il n'y a que deux méthodes :
RAM. Cette méthode est limitée par les limites physiques (emplacements de barrettes) et les limites de la carte mère qui ne saura pas gérer plus d'un certain volume de mémoire.SWAP, ou agrandir les existantes. Vu la taille des disques durs actuels, c'est le plus simple, le moins cher mais aussi le moins performant.
Toute la mémoire à la disposition de GNU/Linux (RAM + SWAP + SWAP…) est gérée de façon transparente pour l'utilisateur.
Le système réserve de la mémoire pour le noyau, les programmes indispensables et les applications, puis il utilise le reste comme un cache (buffers cache).
Dans ce cache, au fur et à mesure il charge les informations utiles, les données transitoires, jusqu'à remplir la RAM. Puis il remplace les informations devenues inutiles, la SWAP étant utilisée s'il ne peut rien remplacer.
La SWAP étant sur le disque dur, elle est plus lente que la RAM, qui est beaucoup plus rapide en temps d'accès et de lecture qu'un disque dur. On dit couramment que la RAM est 1000 fois plus rapide que la SWAP. Le système optimise donc au mieux en utilisant au maximum la RAM.
RAM soit toujours utilisée.
La commande générale :
$ free -mt
Vous indiquera la mémoire totale, la mémoire physique (RAM) et la SWAP en méga-octets (Mo).
Par exemple, cela donne :
total used free shared buffers cached Mem: 884 840 43 0 7 691 -/+ buffers/cache: 142 742 Swap: 956 2 954 Total: 1841 843 998
Comme nous pouvons le voir :
Mem, la RAM est presque totalement utilisée, mais 691 Mo utilisés sont du cache. De la mémoire qui ne serait pas utilisée, et donc gaspillée, si le système n'optimisait pas la gestion des informations transitoires.884 Mo ne correspond pas à la totalité de la RAM physique disponible ( qui est ici de 1 Go, soit 1024 Mo ), la différence étant utilisée par le noyau et n'étant pas comptabilisée par free car cette mémoire ne peut pas servir à autre chose.shared devrait être ignorée, car déclarée obsolète dans le man. Cependant, il semble que cela soit les informations partagées, mises en relation, par au moins deux applications, telles qu'un programme avec les bibliothèques.Swap, les zones d'échanges sont presque inutilisées.La mémoire utilisée est la mémoire réservée, et utilisée, par les programmes qui tournent actuellement sur le système. C'est là que le programme stocke ce dont il a besoin pour fonctionner (variables, fonctions, etc…).
Le tampon de cache (cache buffer) contient les informations montées par le système pour que les programmes aillent plus vite mais qu'il n'est pas requis de monter en mémoire pour qu'ils tournent. Par exemple, cela comprend les fichiers de configuration, ou tout le fichier vidéo de votre lecteur vidéo.
Ces informations montées en mémoire ne sont supprimées, remplacées, que si le programme en ayant besoin a été arrêté et/ou que le système a besoin de l'espace pour autre chose. Autrement, l'information reste en mémoire, et elle peut être réutilisée par un programme ayant de nouveau besoin des informations en mémoire.
Vous pouvez aussi utiliser la commande top qui donne les informations en temps réel. Pour quitter, taper q.
Une commande sympa, non disponible en standard sous la Slackware, est linux_logo, qui vous indique la taille exacte de la RAM.
Pour surveiller la SWAP en particulier, faites :
$ /sbin/swapon -s
Qui est une commande pour le root. Mais un simple utilisateur peut la lancer avec cette option (-s).
Le résultat ressemble à ceci :
Filename Type Size Used Priority /dev/sda1 partition 979924 2668 -1
Ce qui vous permettra de savoir si vous avez assez de SWAP et aussi assez de RAM. Car s'il utilise trop souvent la SWAP cela ralenti votre système.
-s” ne marche pas avant le Kernel 2.1.25. On est jamais assez prudent… Pour aller encore plus loin dans la compréhension et la découverte de la mémoire du votre système.
Vous pouvez regarder la commande :
$man procinfo
Et, en particulier, ses options -d et -D, qui montrent l'usage de la mémoire, par différence ou au total.
Sinon, vous pouvez encore aller voir directement le fichier /proc/meminfo qui est utilisé pour procinfo, en faisant :
$ cat /proc/meminfo
Ce qui retourne :
MemTotal: 905736 kB MemFree: 157944 kB Buffers: 5908 kB Cached: 654848 kB SwapCached: 0 kB Active: 488988 kB Inactive: 231436 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 905736 kB LowFree: 157944 kB SwapTotal: 979924 kB SwapFree: 977256 kB Dirty: 0 kB Writeback: 0 kB Mapped: 81692 kB Slab: 21384 kB CommitLimit: 1432792 kB Committed_AS: 127292 kB PageTables: 652 kB VmallocTotal: 122580 kB VmallocUsed: 3888 kB VmallocChunk: 118276 kB
Comme vous pouvez le voir la mémoire est indiquée en kB ( Ko ), et non en Mo comme avec free.
shared de free.
Enfin, pour tout ce qui est découverte de votre système, vous pouvez aller jeter un oeil à l'Exploration de la configuration.
Si le système utilise beaucoup ( trop ) la SWAP et que nous ne pouvons pas ou ne voulons pas augmenter la RAM, alors une méthode pour optimiser l'accès à la SWAP, et donc le temps de réponse du système, est de créer plusieures partitions de SWAP sur plusieurs disques durs physiques différents.
Par exemple avec deux disques durs SATA, la première partition de SWAP est sur /dev/sda1 (le premier disque) et la seconde sera sur /dev/sdb1 (le second disque).
La première étape est créer une partition, avec cfdisk, fdisk ou parted. Tous sont fournis avec la Slackware, parted étant fourni par défaut (dans l). Il est préférable que cette partition soit de type 82 ( linux swap ).
Créons la zone d'échange :
# mkswap -c /dev/sdb1
Si vous souhaitez qu'elle soit activée à chaque démarrage, ajouter la ligne suivante dans le fichier /etc/fstab :
/dev/sdb1 swap swap defaults 0 0
Si vous avez ajouté la ligne, faites :
# swapon -a
Sinon, pour l'activer temporairement :
# swapon /dev/sdb1
C'est de plus en plus rare de nos jours avec les machines actuelles mais si jamais cela venait à vous arriver voici quelques informations utiles à savoir.
Il peut y avoir plusieures raisons à cela :
Regardez si votre bios est mal configuré. Des options telles que Limit 64 Mo ou Limit OS2 ne doivent pas être activées.
Vérifier que votre noyau est configuré pour supporter votre RAM :
CONFIG_HIGHMEM4G doit être activée.CONFIG_HIGHMEM64G doit être activée.
Dans la partie High Memory support de la configuration du noyau.
Sinon vous pouvez spécifier au système la taille de votre RAM en ajoutant dans le fichier /etc/lilo.conf sa taille en méga-octets ainsi (pour 512 Mo de RAM) :
mem=512M
À la valeur append dans la ligne suivante :
append=""
Devenant donc :
append="mem=512M"
Si cette ligne n'existe pas, ajoutez-la.
Puis, ne pas oublier de recharger lilo, en root :
# lilo -v
Si votre machine a moins de 512 Mo de RAM, prévoyez le double pour la SWAP.
Pendant longtemps, il a été conseillé lors de l'installation d'un système GNU/Linux de prévoir le double, ou le triple, de SWAP que votre PC comptait de RAM. Par exemple, si vous aviez 256 Mo de RAM, il fallait prévoir 512 Mo ou 768 Mo de SWAP.
Aujourd'hui, on considère généralement que cela est devenu inutile si vous avez 512 Mo ou plus de RAM. Alors il suffit généralement de prévoir autant de SWAP que de RAM.
SWAP est une science difficile et que cela dépend de l'utilisation de votre système et des risques tolérés. Il est tout de même à noter qu'un système qui utilise énormément sa SWAP devient dangereux pour les services et données qu'il héberge et qu'il deviendra inutilisable.