Cosa significa se ho un sacco di memoria "inattiva" alla fine di una giornata lavorativa?


21

Dopo una giornata di lavoro sul mio MacBook Pro con Mac OS X 10.6.5, Activity Monitor mostra che la maggior parte degli 8 GB di memoria del mio computer è "Inattiva" e solo una piccola parte del grafico a torta è "Gratis". Questo è anche quando ho chiuso tutte le applicazioni, con solo il Finder in esecuzione.

Cosa significa? La memoria "inattiva" è occupata da qualcosa? O è ancora disponibile per le applicazioni? Grazie.


Risposte:


27

OS X, come la maggior parte dei moderni sistemi operativi, utilizza un sistema di memoria virtuale per la gestione della memoria. Tra gli altri scopi, ciò consente al sistema operativo di trattare il computer con un pool di memoria illimitato. A tale scopo, il sistema operativo invierà parti di RAM inutilizzate a un archivio su disco noto come file di scambio .

Naturalmente, la RAM non è illimitata, quindi OS X raggruppa la RAM in quattro categorie: cablata, attiva, inattiva e gratuita. La memoria cablata è richiesta dal sistema operativo e non può mai essere paginata fuori memoria. La memoria attiva è la memoria utilizzata dai programmi attualmente in esecuzione. La memoria inattiva è stata utilizzata di recente da programmi che sono stati terminati (o non sono stati inutilizzati da molto tempo). La memoria libera è, come suggerisce il nome, RAM che non viene utilizzata.

Quando si avvia un programma, questo viene caricato nella memoria attiva. Quando si esce da un programma, tuttavia, non viene rimosso dalla RAM; piuttosto, viene urtato nella memoria inattiva. Questo è il motivo per cui è spesso più veloce riavviare un programma: è ancora nella RAM (provalo con un grande programma come Firefox).

Una volta utilizzata tutta la memoria (la memoria libera è 0), il sistema operativo scriverà la memoria inattiva nel file di scambio per fare più spazio nella memoria attiva.

Se un programma viene impaginato sul file di scambio e lo si riavvia, verrà tirato dal file di scambio nella memoria attiva.

Quindi in breve, in realtà non dovresti preoccuparti se la tua memoria libera è insufficiente. In effetti, vuoi che sia basso - la memoria libera è memoria sprecata (poiché il sistema operativo non la utilizza per nulla).

Quando si esamina la quantità di memoria utilizzata dal computer, in realtà si desidera prestare attenzione principalmente allo scambio utilizzato , che indica la dimensione del file di scambio di memoria virtuale e Pagina in , che indica la frequenza con cui il sistema operativo deve estrarre memoria dal file di scambio nella memoria attiva.


2
Trovo che i Page out siano un indicatore migliore dell'uso dello swap rispetto ai Page in, perché i Page in includono il caricamento di programmi e il caricamento dal file di scambio.
Gordon Davisson,

1
In Activity Monitor, la mia dimensione della VM è superiore a 160 GB! C'è una sorta di file di scambio sul mio computer che è davvero così grande ?!
hpy,

1
@penyuan: No. Questo è teoricamente quanto può essere grande il file di swap , ma la dimensione effettiva del file di swap è etichettata Swap utilizzata in Activity Monitor.
mipadi,

1
La memoria inattiva è in parte come dici tu, anche se in particolare una cache del filesystem o delle librerie a cui è possibile accedere nuovamente da un'applicazione, ma è anche blocchi di memoria dalle applicazioni attualmente in esecuzione che hanno allocato ma a cui non si accede in un certo periodo di tempo (non sono sicuro del tempo esatto). Il kernel li contrassegna come Inattivi in modo da dare la priorità per il paging su disco se la quantità di memoria libera scende troppo in basso.
drfrogsplat,

2
@deceze: la memoria inattiva viene paginata. La memoria attiva viene spostata su inattiva quando non è più necessaria. Suppongo che se hai così poca memoria che non c'è spazio per la memoria inattiva, la memoria attiva verrebbe paginata direttamente sul disco, ma questa è una circostanza speciale. In effetti, il file di scambio cresce teoricamente indefinitamente (fino a quando non c'è più spazio su disco), ma anche questo è un evento estremamente raro.
mipadi,

9

Molto probabilmente questo non è un problema, e in effetti sta potenzialmente accelerando il tuo computer.

Tutti i sistemi operativi (la maggior parte?) Utilizzano una cache del disco, che memorizza alcuni file a cui è stato effettuato l'accesso di recente in modo da velocizzare l'accesso ripetuto a tali file. La cache del disco su OS X ha dimensioni variabili e verrà visualizzata come "Memoria inattiva" in uso.

Se un programma ha bisogno di più memoria, OS X cancellerà parte della cache del disco (i file utilizzati meno di recente) per consentire lo spazio per l'esecuzione / espansione del programma.

Trovo che se eseguo un sacco di compilazione o ordinamento di foto (ovvero accedendo a migliaia di file in successione) la cache del disco si espanderà e utilizzerà molta memoria inattiva. Fornito proprio questa cache del disco, non è nulla di cui preoccuparsi.

Se si tratta di un processo in background o di un'applicazione che si sta espandendo nel suo utilizzo della memoria (ma le sue pagine vengono contrassegnate come inattive), sarai in grado di capire controllando la presenza di programmi con un utilizzo della "Real Memory" molto elevato in Activity Monitor. Se non c'è nulla ovviamente grande lì (cioè il totale è molto meno di 8 GB), sarà la cache dei file.

Dovresti vedere che c'è poco se qualsiasi utilizzo di Swap e se apri un programma ad alta intensità di memoria la quantità di memoria inattiva diminuirà senza dover passare al disco.

(Credo che ci sia stato un bug in 10.4 o 10.5 per un po 'in cui non avrebbe sempre liberato questa memoria in modo molto efficace e avrebbe causato lo scambio nonostante avesse una cache del disco di grandi dimensioni, ma nella mia esperienza questo sembra risolto in 10.6).


La memoria inattiva è in realtà RAM, non memoria che è stata paginata su disco.
mipadi,

3

La memoria "inattiva" è disponibile per l'uso da parte di altri programmi: è solo la memorizzazione nella cache di programmi o dati che hai usato di recente, nel caso in cui tu ne abbia bisogno di nuovo. Se avvii programmi diversi o hai bisogno di dati diversi, la memoria cache verrà cancellata e resa disponibile per il tuo nuovo carico di lavoro, se necessario.

Questa è la teoria, in ogni caso, e credo che sia solida. Tuttavia, ho trovato questo riferimento a un'utilità di "eliminazione" scritta da qualcuno perché non pensavano che la memoria inattiva fosse rilasciata abbastanza rapidamente.

Per la documentazione ufficiale sull'argomento, leggi questo (e cerca "inattivo").


Per la cronaca, il mio MBP attualmente dice: gratis 58 MB, cablato 239 MB, 1,84 GB attivi, 900 MB inattivi - e il sistema funziona abbastanza bene.
Michael H.

1
Trovo che il comando Purge sia uno strumento di invio di dio. Avere Photoshop + Firefox + Illustrator + Netbean + SmartGit può facilmente far morire a morte un iMac da 4Gb. Certo, Firefox è il principale colpevole, ma se vuoi velocizzare un po 'le cose, esci da Firefox e pubblica "purge &" Buono come nuovo
Antony,

2
La pagina man di Purge dice in realtà che è stata scritta per svuotare solo la cache del disco (non mem anonima: stack, heap o copia in scrittura) per l'analisi delle prestazioni (proprio perché la cache del disco accelera il sistema). Non è stato scritto per essere rilasciato più velocemente, poiché l'esecuzione è più lento rispetto al recupero dinamico della memoria da parte del kernel quando necessario. La chiusura di un'app rimuove completamente tutti i mem allocati e se si elimina successivamente rallenta il caricamento dell'applicazione, consultare linuxatemyram.com/play.html . Immagino che ci sia qualcosa di psicologico nell'eliminazione, così come lo svuotamento compulsivo della spazzatura.
Jano,

1

A partire da OS X 10.5 ci sono evidenti problemi di gestione della memoria in MAC OS X.

Finalmente sono riuscito a riprodurre lo scenario problematico, quindi ho eseguito il test e registrato lo schermo, in video.

Problema di prestazioni MAC OS X Lion: gestione della memoria interrotta

Eseguo il comando tar + bzip, che è roba unix di base, sulla grande quantità di file di immagini, nella mia cartella Immagini /. Prima di iniziare, eseguo il comando "purge" per eliminare i dati del programma inattivi / memorizzati nella cache.

Nel video puoi vedere che la memoria libera inizia a cadere molto velocemente e che inattiva è in costante aumento. Se dai un'occhiata al comando "bsdtar", ci vuole solo un frammento di RAM, quindi il problema non è in questo processo. Non si può dire che si tratti di una perdita di memoria del programma, perché il problema non sarebbe in RAM inattiva, piuttosto in attiva / cablata.

Quando la memoria libera è scesa sotto i 100 MB, ho avviato alcune app, come Safari, iPhoto e MS Word, e puoi vedere nel video che ci vogliono anche pochi minuti per avviare un'app, quando normalmente (quando c'è RAM libera), richiederebbe 3-5 secondi per caricare.

Corro lo stesso scenario e gli stessi comandi sul mio Linux Centos 6 box, nessun problema lì! L'utilizzo della memoria è di circa 10-20 MB, nessun problema con cache / buffer.

La gestione della memoria deve essere molto rotta in Mac OS X!


1
Parte di ciò che descrivi potrebbe costituire la base di una domanda diversa, ma non è una risposta a questa domanda.
Graham Perrin,

2
Direi che la tua descrizione della memoria libera che si riduce rapidamente al set point e che il sistema che accumula tutto il resto della RAM non attiva e cablata come inattiva indica che il sistema funziona esattamente come progettato. Solo perché la gestione della memoria è diversa su un sistema operativo rispetto a un altro non significa che sia rotto su entrambi. Le scelte di ottimizzazione hanno sempre un lato negativo.
bmike

0

Questa discussione ha senso solo se l'affermazione secondo cui "il tuo computer funzionerà più velocemente quando la memoria libera è bassa" - era vera. A meno che il mio Mac desktop non sia cablato in modo strano, nel momento in cui la mia memoria libera (monitorata) inizia a esaurirsi, qualunque programma in esecuzione in quel momento inizia a impantanarsi fino al punto in cui non posso fare nulla fino a quando non torna indietro da solo o dal mio intervento di memoria libera. Ho un iMac 2118 (2006 o successivo) che raggiunge il massimo a 3 GB di RAM, quindi provo a gestirlo quando posso, ma questo è molto frustrante. qualche idea?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.