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
.
Il est donc normal que presque toute votre 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.Soyons un peu concret.
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.
L'option "-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
.
Vous avez peut être remarqué qu'il n'y a pas d'informations concernant de la mémoire partagée, comme le laisse supposé la colonne 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
.
Veuillez noter que le conseil sur la taille de votre(vos) 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.
Thèmes : #administration #articles #jonesy #materiel #noyau #optimisation
Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.