Qu'est-ce que cela signifie si j'ai beaucoup de mémoire «inactive» à la fin d'une journée de travail?

21

Après une journée de travail sur mon MacBook Pro sous Mac OS X 10.6.5, Activity Monitor indique que la majorité des 8 Go de mémoire de mon ordinateur sont "inactifs" et que seul un petit fragment du diagramme à secteurs est "libre". Cela se produit même lorsque j'ai fermé toutes les applications et que seul le Finder est en cours d'exécution.

Qu'est-ce que ça veut dire? La mémoire "inactive" est-elle occupée par quelque chose? Ou est-il encore disponible pour les applications? Merci.

hpy
la source

Réponses:

27

OS X, comme la plupart des systèmes d'exploitation modernes, utilise un système de mémoire virtuelle pour gérer la mémoire. Entre autres objectifs, cela permet au système d'exploitation de traiter l'ordinateur avec un pool de mémoire illimité. Pour ce faire, le système d’exploitation interroge les parties inutilisées de la RAM vers un magasin de disques appelé fichier d'échange .

Bien entendu, la RAM n’est pas illimitée. OS X la regroupe donc en quatre catégories: câblée, active, inactive et libre. La mémoire câblée est requise par le système d'exploitation et ne peut jamais être extraite de la mémoire. La mémoire active est la mémoire utilisée par les programmes en cours d'exécution. La mémoire inactive a récemment été utilisée par des programmes terminés (ou inutilisés depuis longtemps). Libre mémoire est, comme son nom l' indique, la RAM qui n'est pas utilisé.

Lorsque vous lancez un programme, il est chargé dans la mémoire active. Cependant, lorsque vous quittez un programme, celui-ci n'est pas supprimé de la RAM; au contraire, il est heurté dans la mémoire inactive. C'est pourquoi il est souvent plus rapide de relancer un programme - il est toujours en RAM (essayez ceci avec un gros programme comme Firefox).

Une fois que toute votre mémoire est utilisée (la mémoire disponible est égale à 0), le système d'exploitation écrit la mémoire inactive dans le fichier d'échange pour libérer de l'espace dans la mémoire active.

Si un programme est paginé dans le fichier d'échange et que vous le relancez, il sera extrait du fichier d'échange dans la mémoire active.

En bref, vous ne devriez pas vous soucier de savoir si votre mémoire libre est faible. En fait, vous voulez qu'il soit bas - la mémoire libre est un gaspillage de mémoire (car le système d'exploitation ne l'utilise pas pour rien).

Lorsque vous examinez la quantité de mémoire utilisée par votre ordinateur, vous voulez surtout vous concentrer sur Swap utilisé , qui indique la taille du fichier d'échange de mémoire virtuelle, et sur Page ins , qui indique la fréquence à laquelle le système d'exploitation doit extraire de la mémoire à partir du fichier d'échange. en mémoire active.

Mipadi
la source
2
Je trouve que Page outs est un meilleur indicateur de l'utilisation de swap que Page ins, car Page ins comprend les programmes de chargement ainsi que le chargement à partir du fichier swap.
Gordon Davisson
1
Dans Activity Monitor, la taille de ma machine virtuelle dépasse 160 Go! Existe-t-il une sorte de fichier d'échange sur mon ordinateur qui soit si gros?!
HP
1
@penyuan: Non. C'est théoriquement la taille que le fichier d'échange pourrait avoir, mais la taille réelle du fichier d'échange s'appelle Échange utilisé dans le Moniteur d'activité.
Mipadi
1
La mémoire inactive est en partie comme vous le dites, bien qu'il s'agisse spécifiquement d'un cache du système de fichiers ou des bibliothèques pouvant être ré-accédées par une application, mais également des blocs de mémoire des applications en cours d'exécution qui ont été allouées mais n'ont pas été accédées de la durée exacte). Le noyau les marque comme inactifs afin de les hiérarchiser pour une pagination vers le disque si la quantité de mémoire libre devient trop faible.
drfrogsplat
2
@deceze: la mémoire inactive est paginée. La mémoire active devient inactive lorsqu'elle n'est plus nécessaire. Je suppose que si vous avez si peu de mémoire qu'il n'y a plus de place pour la mémoire inactive, la mémoire active sera paginée directement sur le disque, mais c'est une circonstance spéciale. En effet, le fichier d'échange se développe théoriquement indéfiniment (jusqu'à ce qu'il n'y ait plus d'espace disque), mais cela aussi est un événement extrêmement rare.
Mipadi
9

Ce n'est probablement pas un problème, et cela pourrait même accélérer votre ordinateur.

Tous les systèmes d'exploitation (la plupart?) Utilisent un cache disque, qui stocke en mémoire certains fichiers récemment accédés, de manière à accélérer les accès répétés de ces fichiers. La taille de la mémoire cache du disque sous OS X est variable et elle apparaîtra sous le nom "Mémoire inactive" utilisée.

Si un programme a besoin de plus de mémoire, OS X effacera une partie du cache disque (les fichiers les moins récemment utilisés) pour laisser de l'espace au programme pour s'exécuter / se développer.

Je constate que si je compile beaucoup ou que je trie des photos (c’est-à-dire accédant à des milliers de fichiers de suite), le cache disque s’étendra et utilisera beaucoup de mémoire inactive. Pourvu que ce cache disque, rien à craindre.

S'il s'agit d'un processus ou d'une application en arrière-plan qui utilise de plus en plus de mémoire (ses pages sont marquées comme inactives), vous pourrez le savoir en recherchant les programmes dont l'utilisation "Mémoire réelle" est très élevée dans Activity Monitor. S'il n'y a manifestement pas de gros disque (c'est-à-dire que le total est loin de 8 Go), ce sera le cache de fichiers.

Vous devriez voir que l'utilisation de Swap est minime, voire inexistante, et si vous ouvrez un programme gourmand en mémoire, la quantité de mémoire inactive diminuera sans qu'il soit nécessaire de permuter sur le disque.

(Je crois qu'il y a eu un bogue dans 10.4 ou 10.5 pendant un moment qui ne libérait pas toujours cette mémoire très efficacement et causerait un échange malgré le cache disque important, mais d'après mon expérience, cela semble résolu en 10.6).

drfrogsplat
la source
La mémoire inactive est en réalité de la RAM, pas de la mémoire qui a été paginée sur le disque.
Mipadi
3

La mémoire "inactive" peut être utilisée par d'autres programmes - il ne s'agit que de mettre en cache des programmes ou des données que vous avez récemment utilisés, au cas où vous en auriez de nouveau besoin. Si vous lancez différents programmes ou si vous avez besoin de données différentes, la mémoire en mémoire cache sera effacée et mise à la disposition de votre nouveau workload en fonction des besoins.

C'est la théorie, en tout cas, et je crois que cela est valable. Cependant, j'ai trouvé cette référence à un utilitaire de "purge" écrit par quelqu'un parce qu'ils ne pensaient pas que la mémoire inactive était libérée assez rapidement.

Pour la documentation officielle sur le sujet, lisez ceci (et recherchez "inactif").

Michael H.
la source
Pour mémoire, mon MBP indique actuellement: 58 Mo disponibles, 239 Mo câblés, 1,84 Go actif, 900 Mo inactifs - et le système fonctionne plutôt bien.
Michael H.
1
Je trouve que la commande de purge est un outil d'envoi de dieu. Avoir Photoshop + Firefox + Illustrator + Netbean + SmartGit peut facilement créer un crawl mortel pour un iMac 4Gb. Bien sûr, Firefox est le principal coupable, mais si vous voulez accélérer les choses, quittez Firefox et lancez «purge &», c'est comme si c'était à nouveau
Antony,
2
La page de manuel de Purge indique qu’elle a été écrite uniquement pour vider le cache disque (et non pour la mémoire anonyme: pile, tas ou copie à l’écriture) aux fins de l’analyse des performances (précisément parce que le cache disque accélère le système). Il n'a pas été écrit pour être publié plus rapidement, car son exécution est plus lente que le noyau, qui récupère dynamiquement la mémoire en cas de besoin. La fermeture d'une application supprime tous les membres alloués et, si vous la purgez plus tard, le chargement de l'application ralentit , voir linuxatemyram.com/play.html . Je suppose qu'il y a quelque chose de psychologique dans la purge, tout comme le fait de vider les ordures de façon compulsive.
Jano
1

À partir de OS X 10.5, MAC OS X pose des problèmes évidents de gestion de la mémoire.

J'ai finalement réussi à reproduire le scénario problématique, j'ai donc lancé le test et enregistré l'écran, en vidéo.

Problème de performance de MAC OS X Lion - gestion de la mémoire endommagée

J'exécute la commande tar + bzip, qui contient des éléments Unix de base, sur la grande quantité de fichiers image de mon dossier Images /. Juste avant de commencer, j'exécute la commande "purge" pour supprimer les données de programme inactives / mises en cache.

Vous pouvez voir sur la vidéo que la mémoire disponible commence à chuter très rapidement et que l'inactivité augmente constamment. Si vous regardez la commande "bsdtar", il ne faut qu'un fragment de RAM, le problème ne réside donc pas dans ce processus. Vous ne pouvez pas dire qu'il s'agit d'une fuite de mémoire de programme, car le problème ne se trouverait donc pas dans une mémoire morte inactive, mais bien dans actif / câblé.

Lorsque la mémoire disponible est tombée au-dessous de 100 Mo, j'ai lancé certaines applications, telles que Safari, iPhoto et MS Word, et vous pouvez voir dans la vidéo que le démarrage d'une application prend même quelques minutes. Normalement (lorsqu'il y a de la RAM libre), prendrait environ 3-5 secondes à charger.

Je lance le même scénario et les mêmes commandes sur ma machine Linux Centos 6, pas de problème! L'utilisation de la mémoire est de l'ordre de 10 à 20 Mo, pas de problème de cache / tampon.

La gestion de la mémoire doit être très cassée dans Mac OS X!

egremyl
la source
1
Une partie de ce que vous décrivez pourrait constituer la base d'une question différente, mais ce n'est pas une réponse à cette question.
Graham Perrin
2
Je dirais que votre description de la mémoire libre diminuant rapidement jusqu'au point de consigne et que le système accumule tout le reste de la RAM non active et câblée comme étant inactive indique que le système fonctionne exactement comme prévu. Ce n'est pas parce que la gestion de la mémoire est différente sur un système d'exploitation que sur un autre. Les choix d'optimisation ont toujours un inconvénient.
bmike
0

Cette discussion n'a de sens que si l'affirmation selon laquelle "votre ordinateur fonctionnera plus rapidement lorsque la mémoire disponible est faible" était vraie. À moins que mon ordinateur de bureau ne soit câblé bizarrement, à la minute où ma mémoire libre (surveillée) commence à s’épuiser, le programme que j’exécute à ce moment-là commence à s’embourber au point où je ne peux rien faire tant qu’elle ne revient pas toute seule. par mon intervention de mémoire libre. J'ai un iMac 2118 (2006 ou ultérieur) qui ne dépasse pas 3 Go de RAM, alors j'essaie de le gérer quand je peux, mais c'est très frustrant. Des pensées?

webbglider
la source