Problemi di comprensione della memoria inattiva in MacOSX


8

Pensavo di aver capito come MacOSX gestisce la memoria, ma recentemente sono rimasto sconcertato dalle sue prestazioni. Ecco la situazione:

  1. Ho un nuovissimo sistema Core i7 con 8 GB di memoria fisica con MacOSX 10.6.7. Esistono alcune app in esecuzione che occupano regolarmente parte della memoria: Safari, Mail, Xcode, Terminal, ecc.
  2. Devo eseguire tre processi a 64 bit in parallelo, ognuno dei quali utilizza circa 2000 M di memoria reale.
  3. Sebbene la memoria cablata rimanga al di sotto di 1000 M (ovvero ho oltre 7000 M disponibili per i processi), vedo una forte attività di paging che porta a prestazioni pessime dai tre processi ad alta intensità di memoria che ho avviato.
  4. Apparentemente, non sto esaurendo la RAM disponibile, poiché la memoria inattiva segnalata rimane intorno ai 2500M e la memoria attiva non supera i 5000M.

Qualcuno può darmi un indizio sul perché MacOSX non rilascia la memoria inattiva per i processi che ne hanno bisogno, invece di ricorrere al paging? Inoltre, esiste un modo adeguato per influenzare la gestione della memoria da parte del sistema?


Risposte:


5

Ho scoperto, sul mio computer, che Mac OS X è un po 'lento nel trovare le cose giuste.

Ogni volta che faccio qualcosa di particolarmente affamato di memoria, spesso chiudo alcune applicazioni per aiutarlo. Safari è un enorme porco di memoria se è in esecuzione da un po 'di tempo ed è in cima alla lista delle applicazioni da chiudere. Nel mio caso è stato quando ho provato a eseguire VMWare Fusion senza abbastanza RAM effettiva.

Probabilmente lo sai, ma qui ci sono un paio di collegamenti alla documentazione Apple che descrivono l'utilizzo della memoria e la memoria virtuale su OS X:

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

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

Ecco la spiegazione che viene fornita: l'elenco inattivo contiene pagine attualmente residenti nella memoria fisica ma a cui non è stato effettuato l'accesso di recente. È difficile ottenere una definizione esatta di ciò che ciò significa, ma sembra includere una cache del file system e la memoria inattiva effettiva.

La memoria inattiva è probabilmente una cosa difficile da gestire su un sistema operativo interattivo guidato dalla GUI in cui un utente può scegliere di passare a qualsiasi applicazione in esecuzione in qualsiasi momento e fornire reattività in questo tipo di situazione è importante .... ma il rovescio della medaglia è che in una situazione come la tua, il sistema operativo non sa bene quale sia la cosa giusta da fare.

È possibile eliminare (parte di) la memoria inattiva utilizzando il comando di eliminazione . Potrebbe essere necessario installarlo installando gli strumenti CHUD ma potresti già averlo installato. Non ho provato a usare il comando purge quindi YMMV ...

Ho vagato un po 'e potrei o meno aver risposto alla tua domanda. Dopo aver scritto tutto questo, ho trovato un'altra domanda su questo sito che può contenere molte delle stesse informazioni.


Grazie! Il purgecomando è esattamente quello che stavo cercando. Avevo trovato gli articoli di supporto nella KB di Apple, ma non erano particolarmente utili.
Ventzi Zhechev,

1

MacOS fa rilasciare la memoria inattiva, ma solo se ha davvero bisogno di. Quella "memoria inattiva" potrebbe in realtà essere la memoria che il kernel ritiene essere un candidato per il paging - ma non ha ancora deciso, in attesa di passare più tempo senza fare riferimento alla memoria inattiva (invece, si sta concentrando sul paging della memoria che è molto meno probabile che venga riutilizzato presto). In tal caso, "l'eliminazione" della memoria inattiva causa effettivamente le prestazioni dell'utente (poiché le pagine utilizzate di frequente devono essere lette nuovamente dal disco prima che il programma possa continuare l'esecuzione).

purgeè utile per gli sviluppatori per simulare le condizioni di avvio di un'applicazione, ad esempio per vedere quanto tempo impiega a far funzionare un'applicazione per la prima volta dopo un avvio o una lunga pausa. Per l'utente tipico, purgenon è molto utile (e in realtà causerà un degrado temporaneo delle prestazioni).

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.