C'è un modo per fare in modo che OSX usi più RAM e meno swap?


12

Il problema che sto riscontrando è su un server (e anche su altri box OSX) abbiamo 4 GB di RAM, ma stiamo scoprendo che OSX utilizza solo il 40-60% della RAM disponibile pur avendo anche uno scambio di 6-7 GB. Il server esegue Apache e MySQL mentre le altre macchine sono desktop.

Ho confrontato il suo utilizzo con simili scatole Linux (hardware e software) e ho scoperto che Linux utilizza in genere l'80-90% della RAM e ha un file di scambio molto più piccolo (2-3 GB). I server Linux in genere funzionano anche molto più velocemente.

Esiste un modo per forzare OSX a utilizzare più o la maggior parte della RAM prima di utilizzare un file di scambio del disco?

In Windows puoi effettivamente disabilitare del tutto lo swap. C'è qualcosa di simile per OSX?


Per chiarimenti: 1. Il collo di bottiglia è il sistema VM? Come quando si vedono le stelle della memoria, ci sono molte cose se si verificano i pageout. 2. Dove stai ottenendo le informazioni sulla dimensione di VM e gratuita? Ad esempio, la dimensione della macchina virtuale indicata in Monitoraggio attività non è uguale alla dimensione del file di scambio.
Chealion,

Non ho la prova che il sistema VM (VM o swap) sia il problema, ma so che sul mio desktop ho 6 GB di RAM, di cui 2-3 GB sono generalmente gratuiti. Quando cambio programma, penseresti che sarebbe velocissimo perché è tutto nella RAM, ma invece ci vogliono 2-15 secondi per tornare a qualcosa come Illustrator. Penso che sul server stiano accadendo cose simili, qualcosa come la memorizzazione nella cache per MySQL o le tabelle temporanee. Sto usando top per determinare l'utilizzo di VM, RAM e swap. Qualche idea?
Darryl Hein,

3
Per determinare l'effettivo utilizzo di VM è il più semplice da eseguire du -sh /var/vm- detto che potrebbe essere artificialmente alto se è presente un sleepimage (il più delle volte visto sui laptop). Ci sono diversi strumenti disponibili che possono aiutarti a determinare se è la memoria a causare i rallentamenti: vm_stat- in particolare sei interessato al valore delle pagine - se aumenta un po 'allora sai che stai scambiando pesantemente. Per maggiori informazioni su come Apple gestisce la memoria: developer.apple.com/documentation/Performance/Conceptual/…
Chealion

Risposte:


17

La risposta più elementare? No. Il sistema operativo gestisce la gestione della memoria per l'utente, fornendo a un processo tutta la memoria necessaria in quanto lo richiede e non fornisce molto in termini di modifica delle prestazioni del sistema. Non aiuta molto nel cercare di capire se l'utilizzo della memoria fa parte dell'equazione sul perché i server Linux stanno superando i server Mac.

A causa della mancanza di "hackability" nel sistema di memoria virtuale, le tue migliori opzioni sono di valutare le prestazioni della memoria virtuale per vedere se è davvero il motivo per cui stai riscontrando problemi di prestazioni - il più semplice è usare vm_stato usare seguirlo live utilizzando vm_stat [number of seconds]per vedere quante pagine si stanno verificando. Lo spostamento di pagine inutilizzate dalla RAM sul disco rigido ha un costo molto inferiore rispetto al recupero delle pagine dal disco rigido alla RAM. Una pagina in termini di OS X fa riferimento a 4kb di dati.

Inoltre, i processi a 32 bit (ad es. Illustrator) non possono accedere a più di 4 GB, quindi in teoria è possibile avere 2 GB liberi e avere un processo a corto di memoria se sono stati installati 6 GB.

Sia sul desktop che sui server eseguivo vm_stat 2e controllavo l'ultima colonna, specialmente quando si verifica il ritardo di più secondi quando si passa a dire Illustrator.

Per scoprire quanto è grande lo swap, puoi controllare le dimensioni dello swap in Activity Monitor o eseguirlo du -shc /var/vm/swap* | tail -n 1.

L'uso du -sh /var/vmha un avvertimento: sui laptop che hanno la modalità di ibernazione (qualsiasi cosa negli ultimi 4 anni o più recenti) potrebbe esserci sleepimageall'incirca la dimensione di quanta memoria hai installato.


Gergo di memoria di Mac OS X:

Cablato : si riferisce al codice del kernel e simili. Memoria che non dovrebbe mai essere spostata fuori dalla RAM. Conosciuta anche come memoria residente.

Condiviso : memoria condivisa tra due o più processi. Entrambi i processi mostrerebbero questa quantità di memoria, quindi potrebbe essere un po 'fuorviante sulla quantità di memoria effettivamente utilizzata.

Reale : si tratta dell'utilizzo della memoria "reale" per un'applicazione, come riportato da task_info () - un conteggio approssimativo del numero di pagine fisiche presenti nel processo corrente. (Rsize)

Privato : questa è la memoria che un processo sta usando solo da solo, che viene utilizzato nella memoria residente. (RPRVT)

Virtuale : la quantità totale di spazio degli indirizzi nel processo mappata su qualsiasi cosa, che sia uno spazio arbitrariamente grande per variabili o altro, non equivale all'utilizzo effettivo della VM. (VSIZE)

Attivo : memoria attualmente etichettata come attiva e viene utilizzata la RAM.

Inattivo : "La memoria inattiva non viene più utilizzata ed è stata memorizzata nella cache del disco. Rimarrà nella RAM fino a quando un'altra applicazione avrà bisogno di spazio. Lasciare queste informazioni nella RAM è a tuo vantaggio se tu (o un client del tuo computer) torni ad esso più tardi. " - Guida di Mac OS X.

Gratuito : la quantità di RAM effettivamente disponibile senza dati.


La migliore documentazione che conosco (e che sono stato in grado di trovare nella ricerca di follow-up) è l' articolo sulla gestione della memoria di Apple sul sito Web degli sviluppatori.

Altre fonti utili: mailing list Darwin-dev: [ 1 ], [ 2 ] e un vecchio articolo su MacOSXHints . Inoltre Mike Ash ha pubblicato una buona presentazione per i non addetti ai lavori nel suo blog


Potrebbe essere possibile (non l'ho provato) disabilitare il sistema di memoria virtuale eseguendo sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.pliste quindi riavviando in modo che dynamic_pager (il programma che esegue effettivamente l'allocazione della memoria virtuale) non si avvii. Tuttavia, poiché il sistema operativo presume che disponga di memoria virtuale, è possibile che si verifichino problemi molto, molto rapidamente. Per caricarlo eseguire il backup sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(se necessario dalla modalità utente singolo)

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.