it-swarm-eu.dev

Qu'est-ce que la mémoire d'échange?

J'utilise RAM pour stocker certaines de mes tables de base de données et les autres sont stockées sur le disque dur.

Aujourd'hui, j'ai appris que mes processus utilisent 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?

30
developer

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 de plusieurs ordres de grandeur plus lente que la lecture à partir de la mémoire, donc cela ralentit tout le chemin. (L'échange de données entre la mémoire réelle et la mémoire virtuelle est un "échange". L'espace sur le disque est un "espace d'échange".)

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

(L'échange est utile car les applications qui ne sont pas utilisées peuvent être stockées sur le disque jusqu'à ce qu'elles soient utilisées. Ensuite, elles peuvent être "paginées" et s'exécuter à nouveau normalement. Bien qu'elle ne soit pas en mémoire, le système d'exploitation peut utiliser cette mémoire pour autre chose, comme le cache disque. C'est donc une fonctionnalité très utile, mais si vous n'avez pas assez 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.)

45
jrockway

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

Chaque fois que nous avons besoin de cette mémoire, elle doit être remise en mémoire (en échangeant une autre pièce). Il existe des algorithmes extrêmement intelligents pour minimiser le retard, mais parfois nous devons attendre.

Sous Windows, si vous regardez le gestionnaire de tâches, vous pouvez afficher les défauts de page de colonne. Cela montre le nombre de fois, une application demande un morceau de mémoire qui était sur le disque et doit être échangé. Beaucoup de défauts de page = application lente.

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

  • Au niveau CPU, il y a des registres. Ce sont les mémoires les plus rapides mais leur quantité est limitée.
  • Sur le CPU, il y a également un petit cache mémoire. Ici, un petit morceau du programme en cours d'exécution est stocké pour un accès rapide. Recherchez des algorithmes de prédiction de branche si vous voulez en savoir plus.
  • Parfois, il existe 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.
7
Toon Krijthe
cat /proc/pid/smaps

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

Une autre solution pourrait être de pirater votre base de données afin de verrouiller les pages en mémoire (je sais que cela peut être fait, mais je ne peux pas vous dire exactement comment), mais de toute façon, c'est comme si votre base de données utilisait son propre échange et mécanismes de mise en cache.

Pour savoir quel est l'échange et comment fonctionne la mémoire virtuelle ... Je vous recommande de jeter un œil à certaines conférences sur le système d'exploitation, peut-être que le MIT Open Courseware pourrait être utile.

3
fortran

J'ai trouvé une réponse partielle. Une mémoire d'échange est un espace du disque dur de votre ordinateur que les systèmes d'exploitation utiliseront pour placer les informations qui se trouvent réellement sur le RAM pour le libérer pour une autre application. Cela doit être fait lorsque le le système a besoin de mémoire pour un nouveau processus et il n'y en a pas, donc nous pouvons 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ù Swap l'espace (ou la mémoire virtuelle), vous pouvez aller à Task Manger (CTRL + ALT + DEL) et activer à partir de VIEW -> COLUMNS -> VIRTUAL MEMORY. Maintenant, calculez simplement la différence entre l'utilisation de la mémoire et la mémoire virtuelle. Voici également une instruction pour le voir si vous exécutez Vista: http://www.ehow.com/how_5067693_increase-swap-space.html

1
faya