100 votes

La mémoire inactive n'est-elle pas un gaspillage de ressources ?

Je cherche des explications sur l'utilisation de la mémoire sur ma machine, notamment à la lumière de l'exemple de la capture d'écran ci-dessous :

Memory Usage

Je comprends ce qui est Free y Active signifie
Mais quelles sont les significations de Wired y Inactive ?

En particulier inactive pourquoi utilise-t-il autant de mémoire pour quelque chose que nous n'utilisons pas ?

167voto

Oskar Points 1242

La mémoire inactive a été malmenée à cause d'un nom pourri. Elle aurait dû s'appeler quelque chose comme "rendre votre Mac vraiment rapide la deuxième, troisième et quatrième fois qu'il effectue la même tâche", sauf que ce nom est également horrible.

Apple a réécrit le moniteur d'activité lorsqu'il a introduit plusieurs nouvelles fonctionnalités et ajouté la mémoire compressée, donc une partie de ceci ne s'applique plus aux MacOS qui n'affichent pas de "mémoire inactive" mais ceci s'applique toujours à la gestion de la mémoire de Mac OS X comme documenté par rapport à cette version du moniteur d'activité : https://support.apple.com/en-us/HT201538

Voici comment j'ai expliqué les choses à quelqu'un qui ne connaît pas le concept de mémoire virtuelle sous OS X :

  • Câblé : Le système ne peut pas fonctionner sans cette quantité de RAM (jamais échangée).
  • Actif : Les programmes utilisent réellement cette mémoire maintenant ou dans les dernières secondes.
  • Inactif : Les choses que les programmes ont lues sur le disque lent ou ailleurs et dont ils disent ne plus avoir besoin. Les ingénieurs le savent bien, vous retournerez sur Facebook quelques minutes plus tard ou relancerez Word après l'avoir quitté. Les mêmes choses se produisent encore et encore sur les ordinateurs.
  • Gratuit : Totalement gaspillé RAM - le système n'a besoin que d'un ou deux Mo libres pour couvrir les demandes d'allocation à court terme. Pour les allocations les plus importantes, il utilise simplement une partie de la RAM inactive en l'allouant à active/câblée et en supprimant les informations sur ce qu'elle contenait auparavant.

Le problème se pose lorsque la somme Libre+Inactif est inférieure à environ 1/3 du total, et là, les choses peuvent vraiment devenir lentes.

La mémoire inactive est un bonus de vitesse / une RAM à double usage. Il sert à se libérer à tout moment, mais rend aussi les tâches répétées beaucoup, beaucoup plus rapides si le système a deviné correctement et a gardé en mémoire vive quelque chose que vous allez refaire. Elle est plus rapide que la mémoire swappée puisqu'elle est déjà chargée en RAM et accélère les choses lorsque le système de mémoire virtuelle fait de bonnes suppositions.

Lorsque vous vous demandez si la RAM est un problème, plutôt que de regarder chacune des 4 catégories (5 si vous comptez le swap actif), vous pouvez coupler W+A comme ralentissant un nouveau programme/tâche et F+I comme accélérant un nouveau programme/tâche. Plus vous avez de F+I, plus vous pouvez lancer de nouveaux programmes avant que la RAM n'ait besoin de recourir au swapping pour jongler avec la mémoire qui a été allouée.

Vous n'avez pas vraiment besoin de savoir comment fonctionne le swap puisque je l'ai mentionné ci-dessus. En gros, lorsqu'un programme est inactif et n'a pas été utilisé depuis des jours (ou des heures), le système écrit cette mémoire vive sur le disque dur plutôt que de tuer le programme. Cela permet au système de mélanger et de gérer toutes sortes de choses relatives à la gestion de la mémoire et évite à chaque programme d'avoir à discuter entre eux pour se mettre d'accord sur celui qui utilisera le moins de mémoire lorsque le système sera épuisé.

Voici un exemple concret de l'utilisation de la RAM inactive.

  1. Quittez toutes les applications et assurez-vous que les deux applications que nous testons ne sont pas configurées pour démarrer automatiquement lorsque vous vous connectez.
  2. Redémarrez votre Mac
  3. Lancez votre moniteur d'activité et observez la RAM tout au long de la journée.
  4. Temps combien de temps il faut pour lancer l'application A (MS Word serait un bon choix)
  5. Quitter A
  6. Temps combien de temps il faut pour lancer l'application B (Adobe quelque chose serait aussi bien)
  7. Quitter B
  8. Temps que prend le deuxième lancement de A
  9. Quitter A
  10. Deuxième lancement de Time B.
  11. La troisième fois, les A démarrent avec B en marche.

Vous devriez voir des accélérations spectaculaires pour le deuxième / troisième lancement, car le système apprend à garder en RAM inactive les choses dont ces deux applications ont besoin pour fonctionner.


Dans votre cas - le total de Wired et Active signifie qu'un certain swapping sur disque est probablement en train de se produire et votre Mac n'est pas aussi rapide qu'il pourrait l'être puisque votre RAM inactive n'est pas assez grande pour stocker toutes les choses que vous pourriez avoir besoin de réutiliser. Si vous avez un disque SSD rapide, cette allocation de RAM est correcte et au lieu de commencer à ralentir une fois que moins de la moitié de votre RAM est F+I, vous pouvez réduire les choses à environ 1/4 de la RAM totale pour F+I avant de voir une lenteur notable. Ces directives sont générales, et vous voudrez surveiller vm_stat 15 ou un intervalle similaire pour s'assurer que les échanges de volumes continus et moyens ne ralentissent pas votre Mac.

6voto

FromOZ Points 197

Le nombre qui est le plus important pour déterminer si votre Mac est soumis à un "stress" de la mémoire est le nombre de "pages sorties". Dans le moniteur d'activité de Mavericks, ce chiffre n'est plus affiché, il apparaît maintenant dans "Swap Used :".

Les sorties de page signifient que le système d'exploitation a déterminé qu'il n'y a pas assez de RAM disponible pour exécuter toutes les applications et tous les processus qui ont été demandés. Ce qu'il fait alors, c'est qu'il "pagine" sur le disque les parties de la mémoire qui, selon lui, ne sont pas activement utilisées. Cela signifie que la mémoire RAM (rapide) est remplacée par la mémoire du disque dur (lente). Si cela se produit souvent parce que de nombreuses applications sont en cours d'exécution et que l'utilisateur passe d'une application à l'autre, il y aura beaucoup de sorties et d'entrées de pages.

Si vous constatez que le nombre de pages perdues augmente, vous devez prendre des mesures.

2voto

Ernie Points 193

Le problème sur mon Mac est que la mémoire "inactive" ne semble jamais être purgée, sauf si je fais une purge manuelle dans la fenêtre de commande. Elle s'accumule et s'accumule jusqu'à ce que j'obtienne une fenêtre popup me disant de tuer les applications. Même après avoir tué toutes mes applications, j'ai toujours trop de mémoire inactive pour exécuter quoi que ce soit. Donc, sur mon Mac exécutant la dernière version de Mountain Lion, il n'est PAS vrai que la mémoire inactive est récupérée lorsque la mémoire libre devient faible. Soit j'ai une application quelque part qui a verrouillé une partie de la mémoire inactive qui n'est jamais libérée, soit l'iOS a un bug. (J'ai 8GB de mémoire physique ... ça devrait suffire !)

1voto

toofarsideways Points 1406

Merci à tous les auteurs et commentateurs, ce fil de discussion a été instructif et utile pour moi. Mon expérience récente pourrait être utile à quelqu'un. J'utilise mon Mac Mini avec OS X10.8.1 et avec 16G de RAM uniquement pour prototyper des logiciels qui seront exécutés ailleurs. Je peux vous assurer que je ne vais pas "revenir à Facebook dans quelques minutes ou relancer Word après l'avoir quitté" - je fais plutôt cela sur mon Macbook.

Ma tâche consistait à regrouper un grand nombre de données, les entrées/sorties prennent du temps, donc l'idée est de lire le plus grand nombre de données possible dans la mémoire vive en une seule fois, de les traiter, puis de les réécrire sur le disque, et de répéter le processus jusqu'à ce qu'il soit terminé, ce qui prend quelques heures. Ce que je constate, c'est qu'à chaque fois que je lis un nouveau morceau de données, la mémoire inactive fait un bond - je suppose que l'IA du système suppose que je pourrais vouloir réutiliser l'ancien morceau, ce qui n'est pas le cas - et la mémoire libre diminue.

Après quelques itérations de ce processus, la mémoire libre se réduit à quelques Mo, la mémoire inactive libère quelques Mo supplémentaires, et finalement, après quelques minutes de va-et-vient entre la mémoire libre et la mémoire inactive, la mémoire inactive libère quelques Go d'un coup. Tout se passe comme décrit par @bmike, et vm_stat 15 ainsi que le moniteur d'activité montrent 0 page-outs.

Sauf peut-être pas tout à fait. Plusieurs fois, les choses se sont déroulées à merveille, je suis allé prendre un café ou dîner et je n'ai pas surveillé le processus, et ce qui ne devrait pas arriver arrive et le processus lance soudainement un tas de pages et ralentit considérablement. Stipulez que c'est probablement mon code merdique qui cause le problème mais j'aimerais pouvoir désactiver la mémoire inactive juste pour éliminer cette source de variabilité. Est-il cassé ? Je ne dirais pas ça du tout, mais je dirais que la gestion de la mémoire n'est pas optimisée pour mon cas d'utilisation.

0voto

Dominic Zukiewicz Points 3207

Mémoire inactive utilisé par les applications récemment actives et abandonnées. OS X la garde réservée au cas où l'utilisateur voudrait rouvrir le programme. Dans ce cas, OS X n'a pas besoin de relocaliser la mémoire qui accélère les performances. Si vous ne rouvrez pas le programme, après un certain temps, la mémoire de l'inactif sera libérée ou relocalisée.(c)

Cette fonction est intéressante lorsque vous disposez de beaucoup de mémoire vive, mais dans le cas contraire, elle est plutôt gênante. En fait, c'est une question de Apple. Quand vous avez un gadget ou un Mac puissant, tout est cool, mais quand votre appareil vieillit, toutes les fonctions le ralentissent.

Vous devez donc utiliser des astuces spéciales pour le gérer.

Pour la mémoire inactive, il existe une commande purge pour le libérer.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X