Yo uso mi computadora para la programación científica. Tiene una buena cantidad 8GB
de RAM y 12GB
espacio 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-F2
donde 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 python
y si ha numpy
instalado 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 iotop
o top
matarlo 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