8 votes

Problèmes de compréhension de la mémoire inactive dans MacOSX

Je pensais avoir compris comment MacOSX gère la mémoire, mais j'ai récemment été déconcerté par ses performances. Voici la situation :

  1. J'ai un tout nouveau système Core i7 avec 8 Go de mémoire physique fonctionnant sous MacOSX 10.6.7. Il y a quelques applications qui tournent régulièrement et qui occupent une partie de la mémoire - Safari, Mail, Xcode, Terminal, etc.
  2. J'ai besoin d'exécuter trois processus 64 bits en parallèle, chacun d'entre eux utilisant environ 2000M de mémoire réelle.
  3. Bien que la mémoire câblée reste inférieure à 1000M (c'est-à-dire que j'ai plus de 7000M disponibles pour les processus), je constate une forte activité de pagination qui entraîne de très mauvaises performances pour les trois processus gourmands en mémoire que j'ai lancés.
  4. Apparemment, je ne suis pas à court de RAM disponible, car la mémoire inactive signalée reste aux alentours de 2500M et la mémoire active ne dépasse pas 5000M.

Quelqu'un peut-il me dire pourquoi MacOSX ne libère pas la mémoire inactive pour les processus qui en ont besoin, au lieu de recourir à la pagination ? Par ailleurs, existe-t-il un moyen d'influencer la gestion de la mémoire par le système ?

5voto

Billy Jo Points 147

J'ai constaté, sur ma machine, que Mac OS X est un peu lent à afficher les bonnes pages.

Lorsque je fais quelque chose de particulièrement gourmand en mémoire, je quitte souvent quelques applications pour l'aider. Safari est un gros consommateur de mémoire s'il fonctionne depuis longtemps et il est en tête de la liste des applications à quitter. Dans mon cas, cela s'est produit lorsque j'ai essayé d'exécuter VMWare Fusion sans disposer d'une quantité suffisante de mémoire vive.

Vous le savez probablement déjà, mais voici quelques liens vers la documentation d'Apple qui décrit l'utilisation de la mémoire et de la mémoire virtuelle sous OS X :

http://support.apple.com/kb/ht1342

http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html

Voici l'explication qui est donnée : La liste des pages inactives contient les pages qui résident actuellement dans la mémoire physique, mais qui n'ont pas été consultées récemment. Il est difficile d'obtenir une définition exacte de ce que cela signifie, mais cela semble inclure le cache du système de fichiers ainsi que la mémoire inactive proprement dite.

La mémoire inactive est probablement difficile à gérer sur un système d'exploitation interactif à interface graphique où l'utilisateur peut choisir de passer à n'importe quelle application en cours d'exécution à tout moment et où la réactivité dans ce type de situation est importante.... mais le revers de la médaille est que dans une situation comme la vôtre, le système d'exploitation ne sait pas vraiment quelle est la bonne chose à faire.

Il est possible de purger (une partie) de la mémoire inactive en utilisant la fonction purger commande. Il se peut que cette commande doive être installée en même temps que les outils CHUD, mais il se peut que vous les ayez déjà installés. Je n'ai pas essayé d'utiliser la commande purge, donc YMMV...

J'ai un peu divagué et je n'ai peut-être pas répondu à votre question. Après avoir écrit tout cela, j'ai trouvé une autre question sur ce site qui contient une grande partie des mêmes informations et qui pourrait également être utile.

1voto

brianng Points 4478

MacOS fait libérer la mémoire inactive, mais seulement si c'est vraiment nécessaire. Cette "mémoire inactive" peut en fait être de la mémoire que le noyau pense être un candidat à la pagination - mais il n'a pas encore décidé, en attendant que plus de temps passe sans que la mémoire inactive soit référencée (au lieu de cela, il se concentre sur la pagination de la mémoire qui est vraiment moins susceptible d'être utilisée à nouveau bientôt). Dans ce cas, la "purge" de la mémoire inactive entraînera en fait une baisse des performances (puisque les pages fréquemment utilisées devront être relues à partir du disque avant que votre programme ne puisse continuer à s'exécuter).

purge est utile aux développeurs pour simuler les conditions de démarrage d'une application - par exemple, pour voir combien de temps il faut pour qu'une application fonctionne la première fois après un démarrage ou une longue interruption. Pour l'utilisateur typique, purge n'est pas très utile (et entraînera même une dégradation temporaire des performances).

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