57 votes

Qu'est-ce que la mémoire tampon ?

J'utilise la mémoire vive pour stocker certaines tables de ma base de données, les autres étant stockées sur le disque dur.

Aujourd'hui, j'ai appris que mes processus utilisaient la mémoire d'échange. Qu'est-ce que la mémoire d'échange et comment puis-je détecter quel processus utilise la mémoire d'échange et comment puis-je les empêcher de l'utiliser ?

69voto

cdeszaq Points 1407

Si vous manquez de mémoire physique, vous utilisez la mémoire virtuelle, qui stocke les données en mémoire sur le disque. La lecture à partir du disque est plusieurs fois plus lente que la lecture à partir de la mémoire, ce qui ralentit considérablement les choses. (L'échange de données entre la mémoire réelle et la mémoire virtuelle est appelé "swapping". L'espace sur le disque est l'"espace d'échange").

Si votre application "utilise le swap", vous devez soit utiliser moins de mémoire, soit acheter plus de mémoire vive.

(Le swap est utile parce que les applications qui ne sont pas utilisées peuvent être stockées sur le disque jusqu'à ce qu'elles soient utilisées. Elles peuvent alors être "paginées" et fonctionner à nouveau normalement. Tant qu'il n'est pas en mémoire, le système d'exploitation peut utiliser cette mémoire pour autre chose, comme le cache du disque. Il s'agit donc d'une fonction très utile, mais si vous ne disposez pas de suffisamment de mémoire physique pour exécuter votre programme, vous avez certainement besoin de plus de mémoire. Heureusement, la mémoire est vraiment très bon marché de nos jours).

9voto

user54030 Points 1

Un ordinateur dispose d'une certaine quantité de mémoire physique. Mais la plupart du temps, nous en voulons plus. Nous échangeons donc de la mémoire sur disque.

Chaque fois que nous avons besoin de cette mémoire, il faut la remettre en mémoire (en remplaçant un autre élément). Il existe des algorithmes extrêmement intelligents pour minimiser le délai, mais il arrive que nous devions attendre.

Sous Windows, si vous regardez le gestionnaire des tâches, vous pouvez afficher les défauts de la page de la colonne. Cette colonne indique le nombre de fois où une application demande un morceau de mémoire qui se trouvait sur le disque et qui doit être échangé. Beaucoup de défauts de page = application lente.

Ce processus est utilisé à plusieurs niveaux. Un résumé du rapide au lent :

  • Au niveau de l'unité centrale, il y a des registres. Il s'agit de la mémoire la plus rapide, mais sa quantité est limitée.
  • L'unité centrale dispose également d'une petite mémoire cache. Un petit morceau du programme en cours d'exécution y est stocké pour un accès rapide. Pour en savoir plus, faites une recherche sur les algorithmes de prédiction de branche.
  • Il existe parfois des caches de niveau 2 entre le processeur et la mémoire principale.
  • Le niveau suivant est la mémoire principale (RAM).
  • Le dernier niveau et le plus lent de tous est le disque, parfois vous pouvez utiliser des clés USB comme mémoire supplémentaire.

4voto

chrispy Points 3678
cat /proc/pid/smaps

Si vous ne voulez pas utiliser le swap, n'utilisez pas de partition swap (commentez la ligne dans /etc/fstab ), mais cela empêchera le démarrage d'un nouveau processus et fera échouer malloc en cas de manque de mémoire physique. Ce n'est pas une bonne idée en général... ce n'est pas très sûr et ce n'est même pas très utile, car le système d'exploitation conservera les pages chaudes en mémoire et transférera sur le disque celles qui n'ont pas été utilisées récemment.

Une autre solution pourrait être de pirater la base de données pour qu'elle verrouille les pages en mémoire (je sais que c'est possible, mais je ne saurais pas vous dire exactement comment), mais de toute façon, il est probable que votre base de données utilise ses propres mécanismes d'échange et de mise en cache.

Pour savoir ce qu'est le swap et comment fonctionne la mémoire virtuelle... Je vous recommande de jeter un coup d'œil à des cours sur les systèmes d'exploitation, peut-être que le MIT Open Courseware pourrait vous aider.

1voto

faya Points 111

J'ai trouvé une réponse partielle. Une mémoire d'échange est un espace sur le disque dur de votre ordinateur que les systèmes d'exploitation utilisent pour placer les informations qui se trouvent actuellement dans la mémoire vive afin de les libérer pour une autre application. Cela doit être fait lorsque le système a besoin de mémoire pour un nouveau processus et qu'il n'y en a pas. Nous pouvons donc voir que si notre système a beaucoup de RAM, il n'aura peut-être pas besoin de mémoire SWAP.

MISE À JOUR

Pour savoir où se trouve l'espace de swap (ou mémoire virtuelle), vous pouvez aller dans le gestionnaire de tâches (CTRL+ALT+DEL) et activer VIEW -> COLUMNS -> VIRTUAL MEMORY. Il ne vous reste plus qu'à calculer la différence entre l'utilisation de la mémoire et la mémoire virtuelle. Voici également une instruction sur la façon de voir cette différence si vous utilisez Vista : http://www.ehow.com/how_5067693_increase-swap-space.html

-1voto

StupidOne Points 1923

L'espace de pagination est l'espace du disque dur utilisé comme mémoire vive. Il est (relativement) très lente, mais elle empêche les ordinateurs de tomber en panne lorsqu'ils essaient de traiter plus de données que leur mémoire vive ne peut en contenir.

Pour empêcher les processus d'utiliser le swap, installez plus de mémoire vive.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X