Come impedire a OSX di allocare tutta la memoria virtuale di quanto lo spazio disponibile sul disco rigido sia disponibile?

3

Recentemente ho avuto una perdita di dati perché il disco rigido era completamente esaurito dalla memoria virtuale e alcuni programmi non potevano gestire zero spazio libero sul disco rigido. Come posso evitare che ciò accada (oltre a mantenere sempre alcuni GB come buffer)?

    
posta Lenar Hoyt 24.02.2013 - 14:20
fonte

1 risposta

1

Posso proporti un modo per farlo, sebbene non sia completo.

Puoi impostare il limite di memoria per processo usando launchctl limit (vedi pagina man ). Tuttavia questo è per processo non a livello di sistema.

Nella vita reale, pochi processi stanno consumando una grande quantità di memoria. Pertanto, ti consiglio di guardare l'output di Activity Monitor e vedere quali sono i processi che consumano di più. Conta quelli che utilizzano più del 20% della tua RAM. Quanti processi hai? Assumiamo n e assumiamo che tu abbia m GB di RAM. Quanto spazio di swap massimo vuoi usare? Supponiamo che s GB di swap.

Vorrei fare il seguente calcolo: (m + s - 1) / n = <max memory per process in GB>

Converti GB in B: <max memory per process in GB> * 1024 * 1024 * 1024 = <max mem per proc in B>

Ora prova questo limite e vedi se funziona (nota, questa impostazione andrà persa dopo un riavvio, quindi è "sicuro" da eseguire):

sudo launchctl limit rss <max mem per proc in B> <max mem per proc in B + 1073741824>

Se sei soddisfatto di questa scelta, puoi salvarli, quindi sono permanenti. Modifica il file /etc/launchd.conf e aggiungi:

limit rss <max mem per proc in B> <max mem per proc in B + 1073741824>
    
risposta data 24.02.2013 - 16:20
fonte

Leggi altre domande sui tag