La memoria non attiva non è uno spreco di risorse?

85

Sto cercando una spiegazione dell'uso della memoria sulla mia macchina, specialmente alla luce dell'esempio in questa schermata qui sotto:

Capisco cos'è Free e Active significa
Ma quali sono i significati di Wired e Inactive ?

Soprattutto inactive , perché usa così tanta memoria per qualcosa che non usiamo?

    
posta GusDeCooL 11.10.2012 - 13:54
fonte

7 risposte

141

La memoria inattiva ha avuto un rap orribile a causa di un nome schifoso. Avrebbe dovuto essere chiamato qualcosa del tipo "fai in modo che il tuo Mac sia veramente veloce la seconda, terza e quarta volta che fa lo stesso compito", tranne che è un nome terribile.

Apple ha riscritto il monitor dell'attività quando ha introdotto diverse nuove funzionalità e aggiunto memoria compressa, quindi alcune di queste non si applicano più a macOS che non mostrano "memoria inattiva", ma questo si applica ancora alla gestione della memoria di Mac OS X come documentato contro questa versione di Activity Monitor: link

Ecco come ho spiegato le cose a qualcuno di nuovo sul concetto di memoria virtuale su OS X:

  • Wired : il sistema non può funzionare senza questa quantità di RAM (mai scambiata)
  • Attivo: i programmi stanno davvero utilizzando questa memoria ora o negli ultimi secondi
  • Inattivo: cose che i programmi hanno letto dal disco lento o altrove e hanno detto che non hanno più bisogno di nuovo. Gli ingegneri lo sanno meglio, tornerai su Facebook in pochi minuti o rilancerai Word dopo averlo abbandonato. Le stesse cose accadono ancora e ancora sui computer.
  • Gratuito: RAM totalmente sprecata : il sistema richiede solo uno o due MB liberi per coprire le richieste di allocazione a breve termine. Per le allocazioni più grandi, utilizza semplicemente alcune delle RAM inattive allocandolo su attivo / cablato e rimuovendo le informazioni su ciò che ha usato per tenere.

Il problema sorge quando Free + Inactive è inferiore a circa 1/3 del totale e quindi le cose possono davvero rallentare.

La memoria inattiva è la velocità bonus / doppia RAM. Funziona come libera in un momento, ma rende anche le attività ripetute molto, molto più velocemente se il sistema ha indovinato e conservato qualcosa nella RAM che tu farò di nuovo. È più veloce della memoria scambiata poiché è già caricata nella RAM e accelera le cose quando il sistema di memoria virtuale fa buone ipotesi.

Quando ti stai chiedendo se la RAM è un problema, piuttosto che guardare ciascuna delle 4 categorie (5 se conti lo scambio attivo), puoi accoppiare W + A come rallentando un nuovo programma / attività e F + I come accelerare un nuovo programma / attività. Più F + I hai, più nuovi programmi puoi avviare prima che la RAM abbia bisogno di fare affidamento sullo swapping per destreggiarti nella memoria che è stata allocata.

Non hai davvero bisogno di sapere come funziona lo swap da quando l'ho menzionato sopra. Fondamentalmente, quando un programma è inattivo e non è stato utilizzato per giorni (o ore), il sistema scriverà quella RAM sul disco rigido invece di uccidere il programma. Ciò consente al sistema di mescolare e gestire tutti i tipi di cose relative alla gestione della memoria e impedisce a ciascun programma di comunicare tra di loro per stabilire chi utilizzerà meno memoria quando il sistema si esaurisce.

Ecco un esempio reale di come viene utilizzata la RAM inattiva.

  1. Esci da tutte le app e assicurati che le due app che stiamo testando non siano impostate per l'avvio automatico quando esegui l'accesso
  2. Riavvia il Mac
  3. Avvia il tuo Activity Monitor e guarda la RAM in tutto
  4. Tempo necessario per avviare l'applicazione A (MS Word sarebbe una buona scelta)
  5. Esci A
  6. Tempo necessario per avviare l'applicazione B (anche Adobe sarebbe utile)
  7. Esci da B
  8. Tempo per quanto tempo richiede il secondo avvio di A
  9. Esci A
  10. Il secondo avvio di Time B.
  11. Ora A inizia la terza volta con B in esecuzione.

Dovresti vedere aumenti di velocità drammatici per il secondo / terzo lancio mentre il sistema impara a mantenere in RAM inattiva le cose che queste due app devono essere eseguite.

Nel tuo caso - il totale di Wired e Active significa che è probabile che si verifichino alcuni scambi con il disco e il tuo Mac non è veloce come potrebbe essere dato che la RAM inattiva non è abbastanza grande da contenere tutte le cose che potresti bisogno di riutilizzare Se si dispone di un'unità SSD veloce, questa allocazione RAM è OK e invece di iniziare a rallentare una volta meno di 1/2 della RAM è F + I, è possibile tagliare le cose più vicino a 1/4 della RAM totale per F + I prima di vedere una notevole lentezza. Queste linee guida sono generali e ti consigliamo di guardare vm_stat 15 o un intervallo simile per garantire che lo scambio di volumi continui e medi non rallenti il tuo Mac.

    
risposta data 11.10.2012 - 15:46
fonte
6

Il numero che è il più importante nel determinare se il tuo Mac sta ricevendo la memoria "stressata" è la figura di "Page outs". In Activity Monitor in Mavericks questo non è più mostrato, ora mostrano le informazioni in 'Swap Used:'.

Pagina outs significa che il sistema operativo ha determinato che non c'è abbastanza RAM disponibile per eseguire tutte le applicazioni e amp; processi che sono stati richiesti. Ciò che fa allora è che le "pagine" fuori dalle parti del disco del disco che determina non vengono utilizzate attivamente. Ciò significa che la memoria RAM (veloce) viene modificata nella memoria HDD (lenta). Se questo sta accadendo molto perché ci sono molte applicazioni in esecuzione e l'utente sta passando tra le applicazioni, ci saranno un sacco di page outs e pagine in.

Se vedi aumentare la pagina, devi agire.

    
risposta data 26.10.2013 - 18:21
fonte
4

Il problema sul mio Mac è che la memoria "inattiva" non sembra mai essere eliminata a meno che non esegua un'eliminazione manuale nella finestra di comando. Si accumula e si accumula fino a quando non ottengo una finestra popup che mi dice di uccidere le applicazioni. Anche dopo aver ucciso tutte le mie applicazioni, ho ancora troppa memoria inattiva per eseguire qualsiasi cosa. Quindi, sul mio Mac con l'ultima versione di Mountain Lion NON è vero che la memoria inattiva viene recuperata quando la memoria libera si sta esaurendo. O ho un'app da qualche parte che ha bloccato un blocco di memoria inattiva che non viene mai liberato, o l'iOS ha un bug in esso. (Ho 8 GB di memoria fisica ... che dovrebbe essere sufficiente!)

    
risposta data 25.07.2013 - 17:34
fonte
2

Grazie a tutti i poster e i commentatori, questa è stata una discussione istruttiva e utile per me. La mia recente esperienza potrebbe essere utile a qualcuno. Io uso il mio Mac Mini con OS X10.8.1 e con 16G RAM interamente per software di prototipazione che verranno eseguiti altrove. Posso assicurarti che non "tornerò su Facebook in pochi minuti o rileggerò Word dopo averlo chiuso". Lo faccio invece sul mio macbook.

Il mio compito consisteva nell'annullare una grande quantità di dati, l'I / O richiede molto tempo, quindi l'idea è quella di leggere un grosso pezzo di dati da ramare il più possibile in un colpo solo, elaborarlo lì e poi scriverlo torna su disco, quindi ripeti il processo fino al completamento, che richiede alcune ore. Quello che vedo è che ogni volta che leggo una nuova porzione di dati, salta la memoria inattiva - suppongo che il sistema AI presuma che potrei voler usare di nuovo il vecchio chunk, cosa che non voglio - e il libero gocce di memoria.

Dopo alcune iterazioni di questo processo, la memoria libera scende a pochi MB, la memoria inattiva libererà qualche MB in più, e alla fine dopo alcuni minuti di spunta dietro e tra memoria libera e inattiva, la memoria inattiva libererà alcuni GB contemporaneamente. Tutto è come descrive @bmike e sia vm_stat 15 che il monitor Attività mostrano 0 page-outs.

Tranne forse non del tutto. Diverse volte le cose si sono spostate lungo il nuoto, mi sono diretto a prendere un caffè o una cena e non sto monitorando il processo, e quello che non dovrebbe succedere succede e il processo improvvisamente getta via un carico di pagine e rallenta. Supponiamo che sia probabilmente il mio pessimo codice a causare il problema, ma vorrei poter disattivare la memoria inattiva solo per eliminare quella fonte di variabilità. È rotto? Non direi affatto così, ma direi che la gestione della memoria non è ottimizzata per il mio caso d'uso.

    
risposta data 06.08.2014 - 04:52
fonte
0

Inactive memory used by recently active and quit apps. OS X keeps it reserved in case the user wants to open the program again. In it happens, OS X does not need to relocate memory that accelerates performance speed. If you do not re-open the program, after a while the memory of the inactive will be freed or relocated.(c)

Questa funzione è interessante quando si ha molta RAM, ma quando non è abbastanza fastidiosa. In realtà è tutto basato sulla roba di Apple. Quando hai un gadget potente o un Mac tutto è bello, ma quando il dispositivo diventa vecchio tutte le funzionalità lo rallentano.

Quindi devi usare trucchi speciali per gestirlo.

Per la memoria inattiva c'è un comando purge per liberarlo.

    
risposta data 02.11.2015 - 18:03
fonte
-3

Fondamentalmente è rotto. La RAM inattiva deve essere "eliminata" automaticamente quando la RAM libera è bassa. Qual è il punto di tenere la RAM per le applicazioni aperte in precedenza sperando che l'utente lo apra di nuovo? Il fatto che la RAM libera sia bassa indica che le applicazioni ATTIVE esistenti potrebbero non avere abbastanza RAM e sta cambiando ADESSO. Mantenere il GB di RAM per le applicazioni chiuse è semplicemente stupido. Secondo la descrizione di Apple, la RAM inattiva dovrebbe essere eliminata o presa in prestito automaticamente quando la RAM libera è bassa. Questo chiaramente non è il caso.

    
risposta data 01.02.2013 - 03:15
fonte
-4

La memoria inattiva, in sostanza, rende più veloce l'apertura dei processi precedentemente chiusi. Se scopri che il Mac OS occupa una quantità di memoria eccessiva di cui non hai realmente bisogno, dalle dozzine di schede che hai aperto su Safari o Chrome, basta usare il comando 'Elimina' nel Terminale. In OS X Mavericks è sufficiente utilizzare 'sudo purge' (sarà necessario inserire la password). Si ritaglia preziosi secondi quando è necessario riaprire qualcosa, ma se si desidera giocare a un gioco intensivo di RAM o aprire un'applicazione che richiede una RAM, suggerisco di utilizzare il comando Purge.

    
risposta data 28.10.2013 - 14:29
fonte

Leggi altre domande sui tag