Modo per limitare quanta RAM può occupare un processo arbitrario?

11

Diciamo che abbiamo una macchina OS X in esecuzione con 4 GB di RAM. È possibile configurarlo in modo che nessun singolo processo possa occupare più di 3 GB, quindi non importa quanto la memoria sia sottoposta a un processo, c'è sempre un po 'di memoria per mantenere il sistema reattivo?

    
posta Fomite 12.03.2012 - 03:52
fonte

2 risposte

8

Una domanda simile a questa è annotata qui Come posso limitare la quantità di RAM che un'applicazione Mac OS può usare?

Si consiglia di utilizzare il comando ulimit , ma non sono riusciti a limitare l'importo a ciò che desideravano. Penso che il problema in cui si sono verificati è stato il fatto che l'opzione impostata -u o -v non stava tenendo conto del sistema di paging della memoria, ad esempio è possibile allocare solo X quantità di spazio per il processo nella RAM reale, ma possiamo pagina vai alla memoria virtuale per tutto il giorno.

Si noti che questa potrebbe essere la disabilitazione della memoria virtuale pericolosa, potrebbe far sì che il tuo Mac si blocchi semplicemente, ecc. quando gira di RAM.

Prova a eseguire ulimit con argomenti -l, -m, o -v tuttavia, come indicato nella pagina man di ulimit, fino al sistema operativo se presterà attenzione a queste impostazioni o meno come indicato.

ulimit: ulimit [-SHacdefilmnpqrstuvx] [limit]

Modify shell resource limits.

Provides control over the resources available to the shell and processes it creates, on systems that allow such control.

Non riesci a trovare alcuna fonte definita che conferma se OS X ignora o meno ulimit, ma dopo il riferimento ulimit non riesce

Se riesci a far funzionare ulimit per le tue esigenze da solo, prova a farlo, se non una combinazione di ulimit e / o di disabilitazione della memoria virtuale potrebbe permetterti di impostare quel limite di 3 GB sui processi selezionati. FYI qui è un buon link per maggiori informazioni su Disattiva completamente la memoria virtuale in Snow Leopard System 10.6

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
    
risposta data 12.03.2012 - 16:44
fonte
5

Se stai usando il server Lion (o OSX più recente) sul tuo Mac, potresti essere in grado di eseguire OSX all'interno di una VM (VirtualBox, Parallels o VMWare, et.al.) su quel Mac. Limitare la VM a 3 GB di RAM fisica e qualsiasi app o processo all'interno della VM sarà anche così limitato. Il sistema che ospita la VM dovrebbe essere reattivo anche se il sistema operativo nella VM supporta back-swap-disk-limit o si blocca.

Se esegui il debug di un processo potenzialmente in fuga, potresti essere in grado di eseguire ssh nella VM per eseguire il debugger o un debug nub dalla riga di comando e registrare i file fino a quando le cose si bloccano.

    
risposta data 12.03.2012 - 08:01
fonte

Leggi altre domande sui tag