Yo uso mi computadora para la programación científica. Tiene una buena cantidad 8GBde RAM y 12GBespacio de intercambio. A menudo, a medida que mis problemas se han agravado, excedo toda la RAM disponible. En lugar de fallar (lo que sería preferible), parece que Ubuntu comienza a cargar todo en el intercambio, incluyendo Unity y cualquier terminal abierta. Si no alcanzo un programa de fuga a tiempo, no hay nada que pueda hacer más que esperar: me toma de 4 a 5 minutos cambiar a un símbolo del sistema, por ejemplo.Ctrl-Alt-F2donde puedo matar el proceso ofensivo.
Como mi propia estupidez está fuera del alcance de este foro, ¿cómo puedo evitar que Ubuntu se bloquee por agitación cuando uso toda la memoria disponible de un solo programa ofensivo?
¡Experimento en casa *!
Abra una terminal, inicie pythony si ha numpyinstalado intente esto:
>>> import numpy
>>> [numpy.zeros((10**4, 10**4)) for _ in xrange(50)]
* Advertencia: puede tener efectos adversos, monitorear el proceso a través iotopo topmatarlo a tiempo. Si no, nos vemos después de reiniciar.
fuente

Cgroups debería permitirle limitar su uso de memoria por proceso.
https://en.wikipedia.org/wiki/Cgroups
http://www.mjmwired.net/kernel/Documentation/cgroups/memory.txt
La computación científica es notoriamente intensiva en memoria, al colocar su aplicación en un grupo de seguridad, el resto de los procesos no deberían convertirse en víctimas, ya que se aliviará la presión de la memoria.
Alternativamente, una VM podría usarse como una especie de límite estricto, ya que la aplicación solo puede usar la memoria delegada a la máquina virtual, a expensas del rendimiento, por supuesto. Sin embargo, una VM es mucho más fácil de configurar para los no iniciados en comparación con la configuración y el mantenimiento de un cgroup.
Decisiones decisiones :) ¡Buena suerte!
fuente