Creazione di file swap e sleepimage?

2

Recentemente ho installato un SDD nel mio MacPro e ho prestato attenzione all'archiviazione utilizzata, sia per essere constrongvole che la dimensione dell'SSD sarebbe stata sufficiente, sia perché il disco rigido di backup TM non si riempisse troppo velocemente. Questa mattina ho notato che la cartella /private/var/vm aveva file di scambio per un totale di 64 GB. La mia domanda sarebbe come ridurre questo e capire perché succede. Le dimensioni dell'SSD sono solo di 128 GB e avevano una capacità di 60 GB circa. Questo problema di fuga stava per creare un problema di "nessuna stanza", anche se suppongo che avrebbe comunque forzato il riavvio.

Ho letto Quali sono i "sleepimage" e "Swapfile" documenti? e avvisa di non cancellare questi file. Ho cercato un altro po 'e ho scoperto che un riavvio ha cancellato tutto. Dopo l'avvio, c'è uno swapfile di 67 MB, contro i 64 file ciascuno un GB completo.

Non l'ho mai visto prima. Capisco che il riavvio è la risposta, ma c'è qualcosa da fare per evitare che si verifichi? Mi piacerebbe almeno capire quale processo o app l'ha messa in moto.

Sono in esecuzione 10.6.8 Snow Leopard

    
posta JoeTaxpayer 02.02.2015 - 17:20
fonte

3 risposte

3

Probabilmente uno (o più) processo sul tuo sistema stava scorrendo.

Usa il tuo Mac come al solito. Di volta in volta, controlla la cartella / var / vm e, se esegui molti file di scambio, apri Terminal.app e inserisci:

ps xa | awk '{print $1}' | xargs -n 1 sudo vmmap | grep -A3 'Summary' > /Users/YourUserName/Desktop/vmmap_summary.txt

A seconda del numero di processi in esecuzione ci vorranno circa 30-60 secondi. Il tuo account deve essere in grado di eseguire sudo (= di solito un account amministratore).

Questo crea un file di testo chiamato vmmap_summary.txt sul desktop che contiene alcune informazioni sulla memoria e lo scambio di tutti i processi in esecuzione ordinati per PID. Alcuni falliranno perché il loro id di processo è già andato.

Esempio (troncato ai primi quattro PID):

==== Summary for process 1
ReadOnly portion of Libraries: Total=51.8M resident=12.9M(25%) swapped_out_or_unallocated=38.9M(75%)
Writable regions: Total=92.9M written=808K(1%) resident=2112K(2%) swapped_out=0K(0%) unallocated=90.8M(98%)

==== Summary for process 21  
ReadOnly portion of Libraries: Total=77.0M resident=30.9M(40%) swapped_out_or_unallocated=46.1M(60%)  
Writable regions: Total=88.5M written=1116K(1%) resident=5144K(6%) swapped_out=0K(0%) unallocated=83.4M(94%)

==== Summary for process 22
ReadOnly portion of Libraries: Total=150.1M resident=60.1M(40%) swapped_out_or_unallocated=90.0M(60%)
Writable regions: Total=93.2M written=1460K(2%) resident=5440K(6%) swapped_out=0K(0%) unallocated=87.8M(94%)

==== Summary for process 23
ReadOnly portion of Libraries: Total=77.2M resident=31.3M(41%) swapped_out_or_unallocated=45.9M(59%)
Writable regions: Total=96.9M written=1412K(1%) resident=2036K(2%) swapped_out=0K(0%) unallocated=94.9M(98%)

Verifica eventuali comportamenti scorretti (swapped_out > > > 0k).

Per ottenere il nome del processo di un PID anomalo e altre informazioni inserisci:

ps aux | awk '$2 == PID  { print $0 }'

L'output di esempio per un processo con ID 21 - ps aux | awk '$2 == 21 { print $0 }' - sarebbe:

root              21   0,0  0,0  2507740   6552   ??  Ss   10:03am   0:01.48 /usr/libexec/kextd

Ora cerca cosa potrebbe essere sbagliato con l'app o il demone.

    
risposta data 02.02.2015 - 19:37
fonte
1

Gli elementi di scambio che non dovresti toccare poiché fanno parte della struttura principale del sistema Mac OS X; file di swap simili esistono su altri sistemi Unix / Linux. Ma il file sleepimage può essere eliminato in modo sicuro purché tu sappia cosa fa e quale funzionalità perderai se la rimuovi / disattivi.

Fondamentalmente, nella modalità di sospensione "vecchia scuola", se avevi le applicazioni aperte e poi mettevi il Mac in stop e poi il Mac perdeva potenza, sarebbe stato come strappare il cavo di alimentazione dal muro. Significa che lo stato di tutte le app sarebbe annullato e il tuo lavoro scomparirebbe nell'etere digitale.

Ma il nuovo tipo di modalità di sospensione (aka: "modalità di ibernazione") utilizza sleepimage per aggiungere una rete di sicurezza se ne hai bisogno. Significa, quando vai a dormire su un Mac che lo supporta (dipende dal tuo sistema; maggiori dettagli in questa risposta ) , il sistema salverà un'istantanea del tuo sistema (ovvero: cosa c'è nella RAM) sul disco rigido in un file sleepimage . In questo modo se il tuo Mac perde potenza, lo stato dell'applicazione di lavoro e il lavoro correlato vengono salvati su disco. Quindi quando la macchina si riaccende, indovina un po '? Il sleepimage viene caricato nella RAM e si ritorna alla normalità.

Sembra interessante, ma è davvero utile solo per Mac portatili come MacBook, MacBook Pro, MacBook Air, ecc ... Per uno come me, che lavora su un Mac Mini basato su desktop, è abbastanza inutile da quando sono collegato a CA. potenza tutto il tempo. Così, quando ho ricostruito un sistema recente e ho visto un file di% in formato 8GB% occupare spazio prezioso, me ne sono liberato. Ed ecco come puoi farlo anche tu; per prima cosa controlla che cosa sleepimage è impostato sul tuo sistema:

pmset -g | grep hibernatemode

Una delle tre opzioni che dovresti vedere sono:

  • 0 : modalità di sospensione vecchia scuola senza rete di sicurezza. Ideale per i desktop.
  • 3 : modalità di sospensione Hibernate con la rete di sicurezza hibernatemode . Mantiene la RAM alimentata mentre dorme per una scia veloce. Ideale per i portatili.
  • 25 : modalità di sospensione Hibernate con la rete di sicurezza sleepimage . Spegne la RAM durante il sonno e si riattiva sempre caricando sleepimage . Ideale per i portatili e consente di risparmiare energia / durata della batteria non inviando energia ai chip della RAM.

Ora sapendo che se vuoi disabilitarlo, esegui questo comando per impostare sleepimage su hibernatemode :

sudo pmset -a hibernatemode 0

Fatto questo, metti il file 0 :

sudo rm /private/var/vm/sleepimage

E ciò libera lo spazio. Ma c'è ancora il rischio che venga ricreato in futuro; per esempio durante un aggiornamento del sistema. Ecco come puoi assicurarti che il file sleepimage non venga mai ricreato. Per prima cosa crea un segnaposto a lunghezza zero per il file sleepimage :

sudo touch /private/var/vm/sleepimage

Ora cambia il flag "immutable" sul file per assicurarti che non venga mai scritto:

sudo chflags schg /private/var/vm/sleepimage

Fatto questo, sleepimage deve essere rimosso, spazio recuperato e il rischio di ricreare sleepimage viene eliminato. Ma come ho detto, se stai usando un Mac portatile e ti affidi alla modalità di sospensione, la disattivazione non è consigliata.

    
risposta data 02.02.2015 - 19:13
fonte
-1

I file di scambio sono un fatto della vita di Unix. L'unico modo per ridurli è aggiungere più RAM al tuo sistema, in modo che non siano necessari più spesso.

Una volta creato un file di scambio, l'unico modo per recuperare lo spazio è il riavvio.

(Ci sono pagine web là fuori che ti diranno come disabilitare i file di scambio. Ti consiglio vivamente di fare non , perché Mac OS X si aspetta che siano lì.)

    
risposta data 02.02.2015 - 18:48
fonte

Leggi altre domande sui tag